Win32 SDK基础(七)之如何创建一个窗口的子窗口的案例


本文摘自PHP中文网,作者黄舟,侵删。

什么是子窗口?当我们在点击Windows窗口的某个按钮时,比如点击窗口的关闭按钮,往往会弹出一个窗口来提示相关信息,类似这种弹出窗口就是主窗口的子窗口。我们创建子窗口时,也是使用CreateWindow或者CreateWindowEx API。
我们来看下CreateWindow的函数原型:

1

2

3

4

5

6

7

8

9

10

11

12

13

HWND WINAPI CreateWindow(

_In_opt_ LPCTSTR lpClassName,

_In_opt_ LPCTSTR lpWindowName,

_In_ DWORD dwStyle,

_In_ int x,

_In_ int y,

_In_ int nWidth,

_In_ int nHeight,

_In_opt_ HWND hWndParent,

_In_opt_ HMENU hMenu,

_In_opt_ HINSTANCE hInstance,

_In_opt_ LPVOID lpParam

);

这里我们只介绍下第三个参数dwStyle,设置窗口的风格。我们在本专栏创建的第一个Windows窗口时,将该值设置为WS_OVERLAPPEDWINDOW,这个设置的意思是允许窗口重叠。我们想要创建子窗口,也是通过设置窗口的WS_CHILD风格实现。而需要显示子窗口,还需要添加WS_VISIBLE风格。若想以弹出的方式显示子窗口(类似关闭确认的对话框),需要添加WS_POPUP风格。
我们在本专栏介绍创建窗口的代码之上,在主函数中增加如下代码:

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

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

_In_opt_ HINSTANCE hPrevInstance,

_In_ LPWSTR lpCmdLine,

_In_ int nCmdShow)

{

// TODO: Place code here.

 

g_hInstance = hInstance;

BOOL nRet = Register("Main", WndProc);

if (!nRet)

{

MessageBox(NULL, "注册失败", "Infor", MB_OK);

return 0;

}

HWND hWnd = CreateMain("Main", "window");

 

CreateWindow("Main", "子窗口",

WS_OVERLAPPEDWINDOW|WS_CHILD|WS_VISIBLE|WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, 400, 200,

hWnd, NULL, g_hInstance, NULL);

 

 

Display(hWnd);

Message();

return 0;

}

注意第16行代码,就是我们利用CreateWindow创建子窗口,运行程序,效果如下:

阅读剩余部分

相关阅读 >>

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

win32的internet扩展已停止工作怎么解决

win32 sdk基础(一)之windows程序分类以及库和头文件所在目录的详解

win32 sdk基础(八)之 关于windows消息机制的详解(图)

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

关于sdk基础的详细介绍

win32 sdk基础(七)之如何创建一个窗口的子窗口的案例

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

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

win32是什么意思?

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



打赏

取消

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

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

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

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

评论

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