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

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

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风格。
        我们在本专栏介绍创建窗口的代码之上,在主函数中增加如下代码:

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基础(七)之如何创建一个窗口的子窗口的案例

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享