window编程之win程序框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window编程之win程序框架相关的知识,希望对你有一定的参考价值。

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采用的是消息机制




以上是关于window编程之win程序框架的主要内容,如果未能解决你的问题,请参考以下文章

《逐梦旅程:Windows游戏编程之从零开始》学习笔记之二:GDI框架

框架之计算机软件系统体系结构

框架之计算机软件系统体系结构

Windows API编程的作品目录

面向面试编程代码片段之GC

win32API多线程编程