自定义win32窗口的消息无法监测,窗口注册类不能被注销。

    win32自定义窗口无法监测到message,记住create窗口的线程要和该窗口消息循环监测在同一个线程,消息循环监测类似这种结构:

while (m_threadHandleFlag && (gm = ::GetMessage(&msg, NULL, 0, 0)) != 0 && gm != -1)
{
if (m_videoWnd  && !m_videoWnd->PreTranslateMessage(&msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
 

    如果create和消息循环不再同一个线程,也可以,你可以做线程之间消息的转发!消息还是可以跨线程传递的,不过这个很复杂,既然事情能简单为什么不简单地做呢。

    在做win32自定义窗口的过成中遇到了另外一个小问题,因为自定义窗口是依靠纯win32 API创建的,所以要自己注册窗口类,这样窗口才能正常地显示出来并可识别,但是在该窗口关闭后需要UnRegisterClass,不然下次使用RegisterClassEx注册同样名字的窗口的时候将会失败,你可以换名字,但是如果不反注册掉之前注册过的窗口类,该窗口类所占的一些内存资源,将不会被释放,这是不明智的,不过在反注册该窗口类的时候,该窗口类必须没有窗口实例在运行,若有,反注册该窗口类将会失败!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值