我很好奇可以在不使用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中获取它?
答案 0 :(得分:7)
AFAIK,您无法将其设置为NULL
。但是,您会注意到DefWindowProc
的签名与WindowProc
回调的签名相匹配。如果您想要一个合理的默认值,只需给它DefWindowProc
。
答案 1 :(得分:2)
抱歉没有意义。如果没有wndproc,你怎么能掌握这个消息?
没有窗口proc的窗口不是窗口!
答案 2 :(得分:2)
不,你会破坏SendMessage()。只有PostMessage()可以工作。需要支持SendMessage。