• 10856阅读
  • 5回复

QT与win API混合编程需要注意哪些问题? [复制链接]

上一主题 下一主题
离线chenpeib
 
只看楼主 倒序阅读 楼主  发表于: 2006-11-02
最近发现在QT中可以调用MessageBox等WIN下的函数,QT缺少对多媒体的支持,我想如果能混合用的话就可以解决这一问题。对windows下的消息机制如何转换为QT下的signal-slot及在QT上使用HWND这种数据类型有许多疑问,盼高手指点!!!
离线roger2yi

只看该作者 1楼 发表于: 2006-11-08
使用Win32 API是没有问题的,
QWidget有两个函数, 一个是 winID, 用于返回UI控件的HWND,

另外一个是虚函数winEvent,可供覆写,用来截获Windows的原始消息结构.
不过winEvent只有在你的QWidget是主控件的时候才会被调用到,也就是你在main里面生成的那个Widget.

我自己遇到的问题是通过获得的HWND,再获得DC进行绘图会失败,查询一些资料,原因大概出现在QT本身的双缓冲绘图机制,更好的方式是你直接写一个封装好的使用Win32 API绘图的窗体,然后将这个窗体作为QT控件的子窗体,刚好跟QT控件的位置重合,看起来就好像使用QT控件本身进行Win32绘图.
离线roger2yi

只看该作者 2楼 发表于: 2006-11-08
另外一个是虚函数winEvent,可供覆写,用来截获Windows的原始消息结构.
不过winEvent只有在你的QWidget是主控件的时候才会被调用到,也就是你在main里面生成的那个Widget.

更正一下上面这句话,应该说任意控件覆写的winEvent都会被调用到,但是只有在主控件的覆写版本才会截获到最原始的消息,其它控件截获的好像是已经经过过滤的,我自己的经验是用主控件的winEvent才截获得到其它进程发过来的注册消息(registered message).
离线5706046

只看该作者 3楼 发表于: 2009-07-11
ding 可惜太少了
离线5706046

只看该作者 4楼 发表于: 2009-07-11
希望有更多关于这个的介绍和经验交流
离线avcodec
只看该作者 5楼 发表于: 2009-10-12
在Qt Creator中使用Win API,是否可以直接包含相应的头文件,还需要别的什么设置吗?
快速回复
限100 字节
 
上一个 下一个