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 = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 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
参数1:窗口类的名字
参数2:窗口的名字
参数3:可以设置一些窗口的风格
参数8:父窗口的句柄
参数9:菜单的句柄
参数10:初始化的一个消息
hWnd = CreateWindow(szWindowClass, L"hello", WS_OVERLAPPEDWINDOW, 500, 500, 100, 100, NULL, NULL, hInstance, NULL);
其中通过第一个参数,szWindowClass -->窗口类的名字--->来告诉系统创建怎样的窗口
在vs2013中可以在 “string table”文件中看到
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采用的是消息机制