没有wndproc的窗口

1 c++ windows

我很好奇可以在不使用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;
Run Code Online (Sandbox Code Playgroud)

未调用createContext.为什么?哪里错了?是的,也许WM_CREATE消息将被发送到WndProc(现在是DefWindowProc),但是有什么方法可以将它从WndProc传到外面吗?

And*_*ron 7

AFAIK,你不能把它设置为NULL.但是,您会注意到DefWindowProc签名与WindowProc回调的签名相匹配.DefWindowProc如果你想要一个合理的默认值,只需给它.