Win32 SDK基礎(chǔ)(七)之如何創(chuàng)建一個(gè)窗口的子窗口的案例

? ? ? ? 什么是子窗口?當(dāng)我們?cè)邳c(diǎn)擊windows窗口的某個(gè)按鈕時(shí),比如點(diǎn)擊窗口的關(guān)閉按鈕,往往會(huì)彈出一個(gè)窗口來(lái)提示相關(guān)信息,類似這種彈出窗口就是主窗口的子窗口。我們創(chuàng)建子窗口時(shí),也是使用createwindow或者createwindowex 按鈕。
? ? ? ? 我們來(lái)看下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  );

? ? ? ? 這里我們只介紹下第三個(gè)參數(shù)dwStyle,設(shè)置窗口的風(fēng)格。我們?cè)诒緦趧?chuàng)建的第一個(gè)Windows窗口時(shí),將該值設(shè)置為WS_OVERLAPPEDWINDOW,這個(gè)設(shè)置的意思是允許窗口重疊。我們想要?jiǎng)?chuàng)建子窗口,也是通過(guò)設(shè)置窗口的WS_CHILD風(fēng)格實(shí)現(xiàn)。而需要顯示子窗口,還需要添加WS_VISIBLE風(fēng)格。若想以彈出的方式顯示子窗口(類似關(guān)閉確認(rèn)的對(duì)話框),需要添加WS_POPUP風(fēng)格。
? ? ? ? 我們?cè)诒緦诮榻B創(chuàng)建窗口的代碼之上,在主函數(shù)中增加如下代碼:

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,?"注冊(cè)失敗",?"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創(chuàng)建子窗口,運(yùn)行程序,效果如下:

Win32 SDK基礎(chǔ)(七)之如何創(chuàng)建一個(gè)窗口的子窗口的案例

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享