首頁  >  文章  >  運維  >  Win32 SDK基礎(七)之如何建立一個視窗的子視窗的案例

Win32 SDK基礎(七)之如何建立一個視窗的子視窗的案例

黄舟
黄舟原創
2017-06-06 09:47:034522瀏覽

        什麼是子視窗?當我們在點擊Windows視窗的某個按鈕時,例如點擊視窗的關閉按鈕,往往會彈出一個視窗來提示相關訊息,類似這種彈出視窗就是主視窗的子視窗。我們建立子視窗時,也是使用CreateWindow或CreateWindowEx API
        我們來看看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基礎(七)之如何建立一個視窗的子視窗的案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn