簡體   English   中英

沒有wndproc的窗口

[英]window without wndproc

我很好奇,可以在不使用WndProc的情況下創建一個窗口。

因此,我想將lpfnWndProc字段設置為NULL來注冊窗口類; 並以我自己的方式使用msg(由TranslateMessage(&msg)給出)。

這有什么缺點嗎?

在此先感謝您,並為我的語法感到抱歉。

編輯#1:好的,我有一個窗口,但是在某個地方我錯了。

 MSG msg;
    while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE)) {
        if (msg.message == WM_QUIT) return false;
        else {
                TranslateMessage(&msg);
                switch (msg.message) {
                case WM_CREATE:
                    createContext();
                    break;
                default:
                    DispatchMessage(&msg);
                    break;
                }
        }
    } 
    return true;

未調用createContext。 為什么? 我哪里錯了? 是的,也許WM_CREATE消息將被發送到WndProc(現在為DefWindowProc),但是有什么方法可以將其從WndProc中獲取呢?

AFAIK,您不能將其設置為NULL 但是,您會注意到DefWindowProc的簽名與WindowProc回調的簽名匹配。 如果您想要一個合理的默認值,只需給它提供DefWindowProc

抱歉,這沒有任何意義。 如果沒有wndproc,您怎么還可以掌握消息?

沒有窗口proc的窗口不是窗口!

不,您將破壞SendMessage()。 僅PostMessage()可以工作。 需要支持SendMessage。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM