Wine >> C/C++ >> Dialog

Create Window


參考資訊:
1. win32
2. masm32
3. tutorial
4. window-styles
5. examples_win32

Windows的視窗可以分成:Dialog、Single Document Interface(SDI)、Multiple Document Interface(MDI)三種類別,相對於SDI、MDI,Dialog類別是比較容易上手學習的一個類別,相當適合初次學習Windows視窗設計的使用者,而Windows視窗程式設計的核心就是圍繞着事件處理(處理Message),任何的視窗設定或者溝通都是以事件導向為原則,因此,寫出一個簡單的視窗框架,將有助於了解Windows視窗程式的運作

main.c

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    CreateWindow(WC_DIALOG, "main", 
        WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 300, 300, NULL, NULL, NULL, NULL);

    MSG msg = {0};
    while (GetMessage(&msg, NULL, 0, 0)) {
        DispatchMessage(&msg);
    }
    ExitProcess(0);
    return 0;
}

Line 5~6:在建立Windows視窗時,需要指定對應的Class,如:Edit、Button,除了可以使用系統預設的Class之外,也可以註冊自定義的Class,上面例子使用的WC_DIALOG,就是系統預設定義的Dialog Class,WS_OVERLAPPEDWINDOW代表視窗有標題、最大化、最小化的按鈕,WS_VISIBLE是建立一個可視化的視窗
Line 9:從Queue提取Message(包含視窗、系統事件)
Line 10:分發Message到處理視窗事件的副程式,由於目前的Dialog視窗並沒有對應的處理副程式,因此,無法處理任何Message,包含關閉視窗的Message,所以必須使用kill命令強制關閉該視窗

編譯、執行

$ winegcc main.c -o main
$ wine ./main.exe


返回上一頁