首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带wndproc的窗口

不带wndproc的窗口
EN

Stack Overflow用户
提问于 2011-02-11 04:38:30
回答 3查看 1.9K关注 0票数 3

我很好奇有没有可能在不使用WndProc的情况下创建窗口。

因此,我想以自己的方式使用msg (由TranslateMessage(&msg)提供)来注册lpfnWndProc字段设置为NULL的窗口类。

这有什么缺点吗?

感谢前面,并为我的语法道歉。

编辑#1:好的,我有一个窗口,但我在某些地方弄错了。

代码语言:javascript
复制
 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外部获得它吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-11 05:10:00

AFAIK,你不能把它设置为NULL。但是,您会注意到DefWindowProc(http://msdn.microsoft.com/en-us/library/ms633572(v=vs.85%29.aspx)'s签名与WindowProc回调的签名相匹配。如果您想要一个合理的默认值,只需将其设置为DefWindowProc即可。

票数 8
EN

Stack Overflow用户

发布于 2011-02-11 05:11:58

对不起,这没有任何意义。如果没有wndproc,您如何才能获得消息?

没有窗口进程的窗口不是窗口!

票数 2
EN

Stack Overflow用户

发布于 2011-02-11 05:37:13

不,您会破坏SendMessage()。只有PostMessage()可以工作。需要支持SendMessage。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4962379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档