WinMain 函数笔记

2021-04-30 12:26

阅读:374

标签:参数   back   依据   应用程序   跟踪   quit   系统   zed   main   

 1 #include  2 
 3 LRESULT CALLBACK WindowProc(
 4     _In_ HWND hwnd,
 5     _In_ UINT uMsg,
 6     _In_ WPARAM wParam,
 7     _In_ LPARAM lParam
 8 );
 9 
10 int CALLBACK WinMain(
11     _In_ HINSTANCE hInstance,
12     _In_ HINSTANCE hPrevInstance,
13     _In_ LPSTR,
14     _In_ int nCmdShow
15 )
16 {
17     WCHAR * cls_Name = TEXT("My Class");
18 
19     WNDCLASS wc = {};
20     wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
21     wc.lpfnWndProc = WindowProc;
22     wc.lpszClassName = cls_Name;
23     wc.hInstance = hInstance;
24 
25     RegisterClass(&wc);
26 
27     HWND hwnd = CreateWindow(
28         cls_Name,            //类名,要和刚才注册的一致  
29         L"我的应用程序",       //窗口标题文字  
30         WS_OVERLAPPEDWINDOW, //窗口外观样式  
31         38,                  //窗口相对于父级的X坐标  
32         20,                  //窗口相对于父级的Y坐标  
33         480,                 //窗口的宽度  
34         250,                 //窗口的高度  
35         NULL,                //没有父窗口,为NULL  
36         NULL,                //没有菜单,为NULL  
37         hInstance,           //当前应用程序的实例句柄  
38         NULL);               //没有附加数据,为NULL  
39     if (hwnd == NULL)
40     {
41         return 0;
42     }
43 
44     ShowWindow(hwnd, SW_SHOW);
45 
46     UpdateWindow(hwnd);
47 
48 
49     MSG msg;
50     while (GetMessage(&msg, NULL, 0, 0))
51     {
52         TranslateMessage(&msg);
53         DispatchMessage(&msg);
54     }
55     return 0;
56 }
57 
58 
59 LRESULT CALLBACK WindowProc(
60     _In_ HWND hwnd,
61     _In_ UINT uMsg,
62     _In_ WPARAM wParam,
63     _In_ LPARAM lParam
64 )
65 {
66     switch (uMsg)
67     {
68     case WM_DESTROY:
69         {
70             PostQuitMessage(0);
71             return 0;
72         }
73     default:
74         break;
75     }
76     return DefWindowProc(hwnd, uMsg, wParam, lParam);
77 }
78 
79 /* typedef struct tagWNDCLASS {
80     UINT style;
81     WNDPROC lpfnWndProc;
82     int cbClsExtra;
83     int cbWndExtra;
84     HINSTANCE hInstance;
85     HICON hIcon;
86     HCURSOR hCursor;
87     HBRUSH hbrBackground;
88     LPCTSTR lpszMenuName;
89     LPCTSTR lpszClassName;
90 } WNDCLASS, *PWNDCLASS; */

 

winMain中的参数:
  hinstance -         该参数为Windows 为应用程序生成的实例句柄。实例是用来跟踪资源的指针。
  hprevinstance    前一个实例,即程序的父亲的程序实例。
  ipcmdline -       命令行参数。
  ncmdshow       指出如何打开程序的窗口。ncmdshow的值一般会用于ShowWindows()中使用,用来设置新建子窗口的形式。

参数的值可以为:

SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

SW_HIDE:隐藏窗口并激活其他窗口。
SW_MAXIMIZE:最大化指定的窗口。
SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。
SW_SHOWMAXIMIZED:激活窗口并将其最大化。
SW_SHOWMINIMIZED:激活窗口并将其最小化。
SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。
SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。

WinMain 函数笔记

标签:参数   back   依据   应用程序   跟踪   quit   系统   zed   main   

原文地址:http://www.cnblogs.com/youguo/p/7806940.html


评论


亲,登录后才可以留言!