[英]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.