window编程之win程序框架

时间:2022-02-02 03:47:46
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)

1._tWinMain函数为程序的入口点

2.MyRegisterClass 通过调用此函数注册窗口类(设置窗口的属性,样式,回调函数等)

具体函数如下

ATOM MyRegisterClass(HINSTANCE hInstance)            //hInstance:应用程序当前实例
{
//结构体 ex代表高级版 WNDCLASSEX 结构用于注册窗口类
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; //样式
wcex.lpfnWndProc = WndProc; //指明函数回调函数地址
wcex.cbClsExtra = ;
wcex.cbWndExtra = ;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+);
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WIN32PROJECT1);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex);
}

其中调用RegisterClassEx 来完成注册,告诉系统建立的窗口长成什么样。

3.CreateWindow  创建窗口

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

通过上面的函数来调用CreateWindow

window编程之win程序框架

参数1:窗口类的名字

参数2:窗口的名字

参数3:可以设置一些窗口的风格

参数8:父窗口的句柄

参数9:菜单的句柄

参数10:初始化的一个消息

 hWnd = CreateWindow(szWindowClass, L"hello", WS_OVERLAPPEDWINDOW,
, , , , NULL, NULL, hInstance, NULL);

其中通过第一个参数,szWindowClass -->窗口类的名字--->来告诉系统创建怎样的窗口

window编程之win程序框架

在vs2013中可以在 “string table”文件中看到

window编程之win程序框架

window编程之win程序框架

4.ShowWindow(hWnd, nCmdShow); 显示窗口

UpdateWindow(hWnd);  

5.其它函数的介绍

5.1  LoadString(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);   //通过loadstring来获取字符串

5.2  回调函数:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

响应各种消息。

6 其它知识点

window采用的是消息机制