`

动手写第一个Windows程序

阅读更多
用的IDE是Visual Studio 2008 中文版
创建了一个Win32 Application

// sdafsadf.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "sdafsadf.h"
#include <stdio.h>


LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

HWND hwnd;
hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"weixin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","weixin",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"计算机编程语言培训",strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"维新培训",strlen("维新培训"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}

我编译各种错误
然后我就纳闷了,难道是孙鑫的书太老了?
后来按了Alt+F7



配置属性---->常规--->字符集---->选择未设置
就可以正常运行了

结果:


----------------------------------------------------------------------------------

#include < stdio.h >
#include    <windows.h>
#include    <commctrl.h>   
#include    <shlobj.h>     
#include    <string.h>  
#include    <stdlib.h>    
#include    <memory.h>     
#include <htmlhelp.h>
#include <commctrl.h>
#include <time.h>
#include <Winbase.h>
#include <shlwapi.h>
#include    "resource.h"

#define EXTERN  extern

EXTERN HWND ghMainWnd;


// WinTest.cpp : アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include "WinTest.h"
#include "rp_Fn2lp.h"

LRESULT CALLBACK MainDlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL InitMainDlg(HWND);

int WINAPI WinMain(
HINSTANCE hInst,
HINSTANCE hPrev,
LPSTR lpCmdLine,
int nCmdShow
) {
    DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN),GetDesktopWindow(), (DLGPROC)MainDlgProc);

    return 0;
}

LRESULT CALLBACK MainDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
              InitMainDlg(hdlg);
  return FALSE;
case WM_SYSCOMMAND:
switch( wParam ){

case SC_CLOSE :// 終了処理選択
EndDialog(hdlg, TRUE);
break;

}

return FALSE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hdlg, TRUE);
break;
}
return TRUE;
case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return FALSE;
}

return TRUE;
}

BOOL InitMainDlg(HWND hdlg)
{
return TRUE;
}


--------------------------------------------------------------------------------------------------------------------------------------------------------------------
SetFocus(hdlg);
GetFocus();
MoveWindow(hdlg,300,200,600,350,NULL);

-------------------------------------------------------------------------------

int aclState = 7;

for( int i = 0;i < 32;i++ )
{
        int temp = 1;
temp = temp << i;
temp = aclState & temp;
if(temp != 0){
   MessageBox(hdlg,"ok","weixin",0); 
}
}
分享到:
评论

相关推荐

    自己动手写操作系统

    第1章 马上动手写一个最小的"操作系统"1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 ...

    自己动手写操作系统 pdf

    第1章 马上动手写一个最小的“操作系统”1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 2.1.1 ...

    自己动手写操作系统 电子工业出版社 pdf

    第1章 马上动手写一个最小的“操作系统”1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 2.1.1 ...

    自己动手写操作系统(含源代码).part2

     做真正 Hacker的乐趣──自己动手去实践 2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理,还需要实际...

    自己动手写操作系统(含源代码).part1

     做真正 Hacker的乐趣──自己动手去实践 2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理,还需要实际...

    windows驱动开发技术详解-part2

     1.2 第一个驱动程序HelloDDK的代码分析  1.2.1 HelloDDK的头文件  1.2.2 HelloDDK的入口函数  1.2.3 创建设备例程  1.2.4 卸载驱动例程  1.2.5 默认派遣例程  1.3 HelloDDK的编译和安装  1.3.1 用...

    windows上可编译Linux内核

    第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法...

    Windows驱动开发技术详解的光盘-part1

     1.2 第一个驱动程序HelloDDK的代码分析  1.2.1 HelloDDK的头文件  1.2.2 HelloDDK的入口函数  1.2.3 创建设备例程  1.2.4 卸载驱动例程  1.2.5 默认派遣例程  1.3 HelloDDK的编译和安装  1.3.1 用...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    由于电子书超过80M故只能...第一卷地址: http://download.csdn.net/source/3488105 第二卷地址: http://download.csdn.net/source/3488226 第三卷地址: http://download.csdn.net/source/3488231 第四卷地址: ...

    android stadio NDK开发第一个例子

    Windows下Android NDK开发例子.

    Windows Phone 4. 使用消息推送机制

    微软Windows® Phone推送通知服务(PushNotificationService)为第三方开发者提供了一个弹性、专注、可持续的通道,支持发送消息、从服务器(web services)端更新Windows® Phone应用程序。 在这一部分中,一个移动应用...

    windows下可编译linux 用insight+bochs源码级调试

    第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第一个包)

    作者:周家安,微软最有价值专家(MVP)。pdf书籍270M,分为两个压缩包,注意两个包下载完后一起解压缩。...这是第一个压缩包。第二个包地址:https://download.csdn.net/download/wosingren/10463468

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    第1章 文件和文件夹管理 1 1.1 文件管理 1 1.1.1 append——指定打开文件 1 1.1.2 assoc——文件名扩展关联 2 1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——...

    windows域控制器建立教程

    我们要做的第一件事就是给这台成员服务器指定一个固定的IP,在这里指定情况如下: 机器名:Server IP:192.168.5.1 子网掩码:255.255.255.0 DNS:192.168.5.1(因为我要把这台机器配置成DNS服务器) 由于Windows Server ...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    由于电子书超过80M故只能...第一卷地址: http://download.csdn.net/source/3488105 第二卷地址: http://download.csdn.net/source/3488226 第三卷地址: http://download.csdn.net/source/3488231 第四卷地址: ...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第二个包)

    作者:周家安,微软最有价值专家(MVP)。pdf书籍270M,分为两个压缩包,注意两个包下载完后一起解压缩。本书全面系统地论述了C# 6.0的开发...第一个压缩包地址:https://download.csdn.net/download/wosingren/10463453

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    由于电子书超过80M故只能...第一卷地址: http://download.csdn.net/source/3488105 第二卷地址: http://download.csdn.net/source/3488226 第三卷地址: http://download.csdn.net/source/3488231 第四卷地址: ...

    python 自己动手开发微信公众号

    使用 Python 开发桌面应用程序时,第一步是选择合适的框架。有几个选项可用,例如Kivy,Tkinter,PyQt,PyGTK和wxPython。每个框架都有其独特的功能和限制,因此选择最适合项目需求的框架非常重要。 框架 基维 Kivy...

    深入浅出MFC【侯捷】

    勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain...

Global site tag (gtag.js) - Google Analytics