Win32 SDK基础(五)之关于窗口类的简单介绍


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

    switch (uMsg)

    {

    case WM_DESTROY:

        PostQuitMessage(0);//可以使GetMessage返回0

        break;

    default:

        break;

    }

    return DefWindowProc(hWnd, uMsg, wParam, lParam);

}

 

 BOOL RegisterWindow()

{

    WNDCLASSEX wce = { 0 };

    wce.cbSize = sizeof(wce);

    wce.cbClsExtra = 0;

    wce.cbWndExtra = 0;

    wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

    wce.hCursor = NULL;

    wce.hIcon = NULL;

    wce.hIconSm = NULL;

    wce.hInstance = NULL;

    wce.lpfnWndProc = WndProc;

    wce.lpszClassName = "DllMain";

    wce.lpszMenuName = NULL;

    wce.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;

    ATOM nAtom = RegisterClassEx(&wce);

    if (nAtom == 0)

        return FALSE;

    return true;

}

RegisterWindow()中注册的窗口类名称为"DllMain",我们在dll的主函数中调用该注册函数完成注册:

1

2

3

4

5

6

7

8

9

10

BOOL APIENTRY DllMain( HMODULE hModule,

                       DWORD  ul_reason_for_call,

                       LPVOID lpReserved

                     )

{

    ....

    RegisterWindow();

    return TRUE;

}

}

在我们的主程序中使用该窗口类创建窗口:

1

2

3

4

5

6

7

8

9

10

11

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

    _In_opt_ HINSTANCE hPrevInstance,

    _In_ LPWSTR    lpCmdLine,

    _In_ int       nCmdShow)

{

    ...

    HWND hWnd = CreateMain("DllMain", "我是一个Dll注册的窗口");

    Display(hWnd);

    Message();

    return 0;

}

运行程序你会发现我们也成功生产了这个窗口:



2.3 局部窗口类

局部窗口类从定义上来说,凡是未在wce的style中添加CS_GLOBALCLASS,而注册的窗口类都是局部窗口类。

1

wce.style = CS_HREDRAW | CS_VREDRAW;//未添加CS_GLOBALCLASS

我们在上一文中注册的窗口就是一个局部的窗口类,它的特点就是只能在注册的作用域内使用,由于它和全局窗口类只在注册的style和作用域上有分别,这里就不再详述,如要了解,请参照上一文。

以上就是Win32 SDK基础(五)之关于窗口类的简单介绍的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

win32 sdk基础(十三)之键盘和鼠标消息的详细介绍

win32 sdk基础(四)之如何从零开始创建windows窗口的第二步

关于sdk基础的详细介绍

win32 sdk基础(二)之关于cl.exe和link.exe编译和连接程序的详解(图)

win32 sdk基础(五)之关于窗口类的简单介绍

win32是什么意思?

win32 sdk基础(十一)之消息队列和getmessage/peekmessage、sendmessage/postmesage的详解

win32 sdk基础(十二)之wm_paint消息的处理(图)

win32 sdk基础(六)之详解窗口类的查找过程和相关api

win32和win64的区别是什么

更多相关阅读请进入《win32》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...