参数说明:   valid"> Windows程序设计学习笔记(1):一个简单的windows程序 - 11GX
首页 > Windows程序设计学习笔记(1):一个简单的windows程序

Windows程序设计学习笔记(1):一个简单的windows程序

《Windows程序设计》(第五版)(美Charles Petzold著)

 1 #include
 2 
 3 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 4 
 5 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow) 
 6 //第一个参数是实例句柄,在Windows程序中,句柄就是一个数值,程序里用它来标志某些东西
 7 //第三个参数是用来运行程序的命令行
 8 //第四个参数用来指明程序最初如何显示:正常显示、最大化到全屏、最小化到任务栏
 9 {
10     static TCHAR szAppName[]=TEXT("HelloWin");
11     HWND hwnd;    //窗口句柄
12     MSG msg;    //消息结构
13     WNDCLASS wndclass;    //窗口类结构
14 
15     wndclass.style=CS_HREDRAW | CS_VREDRAW;
16     wndclass.lpfnWndProc = WndProc; //将窗口类的过程设为WndProc函数
17     wndclass.cbClsExtra=0;
18     wndclass.cbWndExtra=0; //这两行用于在类结构和Windows内部维护的窗口结构中预留额外的空间
19     wndclass.hInstance=hInstance; //应用程序的实例句柄
20     wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //为所有基于该窗口类的窗口设定一个图标
21     wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //载入一个预定义的鼠标指针
22     wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //为这类窗口的客户区指定背景颜色
23     wndclass.lpszMenuName=NULL; //指定窗口类的菜单
24     wndclass.lpszClassName=szAppName; //为窗口类指定一个名称
25 
26     if(!RegisterClass(&wndclass)) //RegisterClass(&wndclass)窗口类注册
27     {
28         MessageBox(NULL,TEXT("This program requares Windows NT"),szAppName,MB_ICONERROR);
29         return 0;
30     } 
31 
32     hwnd=CreateWindow(szAppName, //创建窗口类 窗口类名称
33             TEXT("The Hello Program"), //窗口标题
34             WS_OVERLAPPEDWINDOW, //风格
35             CW_USEDEFAULT, //初始x坐标
36             CW_USEDEFAULT, //初始y坐标
37             CW_USEDEFAULT, //初始x方向尺寸
38             CW_USEDEFAULT, //初始y方向尺寸
39             NULL, //父窗口句柄
40             NULL, //窗口菜单句柄
41             hInstance, //程序实例句柄
42             NULL); //创建参数
43     ShowWindow(hwnd,iCmdShow); //显示窗口
44     UpdateWindow(hwnd); //重绘窗口
45     while(GetMessage(&msg,NULL,0,0))//消息循环,GetMessage函数用于从消息队列中对消息进行检索,此调用将一个指向名称为msg的MSG结构变量的指针传给Windows
46     {
47         Translate(&msg); //将msg结构返还给Windows以进行某些键盘消息的转换
48         DispatchMessage(&msg); //将msg结构再次返回给Windows,接下来,Windows会将这条消息发送给合适的窗口过程来处理
49     }
50     return msg.wParam;
51 }
52 
53 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
54 {
55     HDC hdc; //设备环境句柄
56     PAINTSTRUCT ps; //绘制结构
57     RECT rect; //矩形结构
58    
59     switch(message) //消息处理
60     {
61     case WM_VREATE:
62         return 0;
63     case WM_PAINT: //当窗口客户区的部分或全部无效且必须更新时应用程序将收到此通知
64         hdc=BeginPaint(hwnd,&ps); //几乎总是从BeginPaint开始
65         GetClientRect(hwnd,&rect);
66         DrawText(hdc,TEXT("Hello,Windows 10!"),-1,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER); //绘制文本
67         EndPaint(hwnd,&ps);
68     case WM_DESTROY: //销毁窗口
69        PostQuitMessage(0);
70        return 0;
71     }
72     return DefWindowProc(hwnd,message,wParam,lParam); //对所有窗口过程没有处理的消息进行默认处理
73 }

 

转载于:https://www.cnblogs.com/Toya/p/11193477.html

更多相关:

  • 对话框是GUI程序和用户进行简短交互的顶层窗口,所谓顶层窗口即始终在主窗口之上显示。QDialog是Qt所有类型的对话框窗口的基类,它继承于QWidget,是一种容器类型组件。   QWidget是所有窗口类的抽象,它也可以生成对话框,但是对话框是常见的窗口组件,若每次要使用对话框,都利用QWidget来生成并设置相关参数,显然...

  •     Alt+V垂直复制当前窗口   Alt+Shift+V将当前窗口复制到另一边的分割窗口显示,Alt+Shift+M移动当前活动窗口到另一边...

  • :vertical sfind  垂直分隔窗口(vsf),但是两个窗口的内容完全相同。在编辑的时候,内容也完全相同,如果要关闭一个窗口,输入:exit即可...

  • windows.open("URL","窗口名称","窗口外观设定"); 点击这里 点...

  • 一.  结构的基本知识 聚合数据类型能够存储多个数据,C语言提供了两种类型的聚合数据类型,数组和结构。数组是相同的数据,结构是不同类型的数据聚合。结构也是一些值得集合,这些值成为它的成员,每个结构都有它的名字,他们是通过名字来访问的。 1.      结构声明 在结构声明时,必须列出它包含的所有成员,这个列表包括每个成员的类型和...

  •   在前面认识C中的结构体中我介绍了结构体的基础知识,下面通过这段代码来回顾一下: 1 #include 2 #define LEN 20 3 4 struct Student{ //定义结构体 5 char name[LEN]; 6 char address[...

  • Hibernate 配置参数hibernate.hbm2ddl.auto  Hibernate中的配置文件:              参数说明:   valid...