求解,Qt中使用GDI+库,该怎么dnf卡仓库的解决办法怎么dnf卡仓库的解决办法

Qt编写的子界面动态库,如何被VC、DELPHI等调用? - QTCN开发网 - Powered by phpwind
查看完整版本: [--
Qt编写的子界面动态库,如何被VC、DELPHI等调用?
这个子界面用的是QGraphicsView编写的,要求被嵌入到VC、Delphi的父窗体中现在的问题是Qt自己的QApplication消息循环似乎阻塞了VC程序自己的CWinApp消息循环,导致程序卡死,子窗体显示不出来。查阅了很多资料,官方有qtwinmigrate可以解决QT和MFC混合编译的问题,但是官方的文档,完全没看懂,特别是要求用cmd命令行那一块,就是link aginst qt libary完全没看懂,也不知道正确怎么操作。导致我用Qt Creator,里面想声明一个MFC的CString、CWinApp变量都不行。目前用的Qt是QT5.2。我的目的是实行一个i通用性的跨平台的矢量图画板程序,现在领导的意思叫我直接用QPainter,类似于直接使用GDI等工具但是我不知道怎么对WINDOWS、Linux、UNIX、MAC OS等系统底层消息、事件进行抽象及封装。领导的意思是叫我看QT是如何实现跨平台的,叫我直接移植QT系统跨平台和绘图引擎这部分源代码,然后可以使用任何的C++编译器都能编译成自己的程序。这弄得来我头的大了,感觉技术难度实在太大了,我觉得我还是先把QGraphicsView编写的子界面在VC、DELPHI下调用出来、正常使用再说吧
领导的意思是叫我看QT是如何实现跨平台的,叫我直接移植QT系统跨平台和绘图引擎这部分源代码,然后可以使用任何的C++编译器都能编译成自己的程序。这个难度太大,不要考虑了。QGraphicsView编写的子界面在VC、DELPHI下调用出来、正常使用再说吧。写个dll通过动态方式(函数名)调用标准c函数,数据交互什么的也都是c的类型,类型和数据交互不要包含任何c++和Qt的东西。这样vc下最起码没问题了,delphi我记得动态调用(函数名)c的dll还是很方便的。
发布的程序也要包含Qt的dll模块[attachment=12164]
:领导的意思是叫我看QT是如何实现跨平台的,叫我直接移植QT系统跨平台和绘图引擎这部分源代码,然后可以使用任何的C++编译器都能编译成自己的程序。这个难度太大,不要考虑了。QGraphicsView编写的子界面在VC、DELPHI下调用出来、正常使用再说吧。写个dll通过动态方式(函数名 .. ( 12:01) 版主我现在就是用QT写的一个标志C++动态库,用的exter &C&导出的动态库函数,里面再调用的QGraphicsView的相关东西。现在的问题是QGraphicsView实现的子窗体,想嵌套在VC的父窗体里,例如是个MFC的一个VIEW,发现在OnCreate函数中调用DLL的导出函数直接卡死了。查资料说是需要用QT的QMfcApp的Run代替MFC的CWinApp的Run,用QT的消息循环取代MFC的消息循环。现在的情况就是想混合编译,就是不知道怎么正确搭建这个环境。
QT编的DLL。早VC里面不可用,VC编的DLL。在QT里面也不可以用。
:QT编的DLL。早VC里面不可用,VC编的DLL。在QT里面也不可以用。 ( 16:52) 这个说法是不对的。首先Qt 和 VC 不是对等的概念,或者你的VC是特指 MFC?Qt 和 MFC 是对等的,二者都是对系统API的封装,二者混合编程,考验的主要是对系统API掌握的的功底。GUI程序需要有事件循环,不管是Qt提供,还是MFC提供,稍微深入一下,调用的都是Windows的同一个API接口,其他也是这样。
:版主我现在就是用QT写的一个标志C++动态库,用的exter &C&导出的动态库函数,里面再调用的QGraphicsView的相关东西。现在的问题是QGraphicsView实现的子窗体,想嵌套在VC的父窗体里,例如是个MFC的一个VIEW,发现在OnCreate函数中调用DLL的导出函数直接卡死了。... .. ( 14:05) mfc方面没接触过这方面不熟。我就没用过vc1、首先测试不嵌入QGraphicsView实现的子窗体,看能不能正常调用和显示。就是简单的调用一下c dll的函数,然后直接显示QGraphicsView窗口。如果正常看2。2、用win api有个findwindow什么的函数,找到QGraphicsView窗体句柄,还有个win api函数可以把任意窗口做为子窗口嵌入到另一个窗口中,具体这个api不记得了。。。百度能搜到这个api
我以前用c++builder,写过那个嵌入窗口的api的测试例子。可以嵌入vc写的程序窗口,但是只是简单显示没有任何数据交互。
SetParent - 函数功能函数功能:该函数改变指定子窗口的父窗口。函数原型:HWND SetParent(HWND hWndChild,HWND hWndNewParent)
版主,现在遇到新的问题我想在VS2008下静态编译QT,我有个以前搭建的VS2008+QT4.4的环境,能正常编译QT代码然后,我下载的qtwinmigrate里面有个configure.bat,但是用cmd运行后没有反映,而且也没有生成我想要的lib文件,然后查了VS2008静态编译QT的一些资料,也没有说怎么单独编译一个后期增加的QT源代码还有就是对qt的configure.exe和qmake等指令不熟悉
版主,现在遇到新的问题我想在VS2008下静态编译QT,我有个以前搭建的VS2008+QT4.4的环境,能正常编译QT代码然后,我下载的qtwinmigrate里面有个configure.bat,但是用cmd运行后没有反映,而且也没有生成我想要的lib文件,然后查了VS2008静态编译QT的一些资料,也没有说怎么单独编译一个后期增加的QT源代码还有就是对qt的configure.exe和qmake等指令不熟悉
版主,现在遇到新的问题我想在VS2008下静态编译QT,我有个以前搭建的VS2008+QT4.4的环境,能正常编译QT代码然后,我下载的qtwinmigrate里面有个configure.bat,但是用cmd运行后没有反映,而且也没有生成我想要的lib文件,然后查了VS2008静态编译QT的一些资料,也没有说怎么单独编译一个后期增加的QT源代码还有就是对qt的configure.exe和qmake等指令不熟悉
版主,现在遇到新的问题我想在VS2008下静态编译QT,我有个以前搭建的VS2008+QT4.4的环境,能正常编译QT代码然后,我下载的qtwinmigrate里面有个configure.bat,但是用cmd运行后没有反映,而且也没有生成我想要的lib文件,然后查了VS2008静态编译QT的一些资料,也没有说怎么单独编译一个后期增加的QT源代码还有就是对qt的configure.exe和qmake等指令不熟悉
不好意思,网页出了点问题,导致9-12楼重复提交了
:这个说法是不对的。首先Qt 和 VC 不是对等的概念,或者你的VC是特指 MFC?Qt 和 MFC 是对等的,二者都是对系统API的封装,二者混合编程,考验的主要是对系统API掌握的的功底。GUI程序需要有事件循环,不管是Qt提供,还是MFC提供,稍微深入一下,调用的都是Windows的同一个API接 .. ( 21:02) 可是我以前用QT编的DLL,在MFC里面调用的时候,不行,我 把QT的工程导入到VS2010里面,再次编译成动态库,是可以调用的。
[attachment=12219]以前c++builder写的SetParent函数的测试程序不管是vc的mfc,cb delphi的vcl,qt的库,最底层都是用的windows的api。它们之间虽然上层的封装形式不同,但是最底层的windows api的调用规则都是一样的,都是遵循windows api的调用规则。它们之间的混合使用只要只使用winndows api和动态调用c的函数就应该没问题。ps:好像delphi可以写出c形式的函数。因为pascal和c,参数的压栈规则是不一样的。
感谢以上各位的耐心解答,改为VS2008+QT4.8.6,就可以编写ActiveX控件,供其他Windows平台的exe调用
用qtwinmigrate里面的方法应该是可以的。
:[图片]以前c++builder写的SetParent函数的测试程序不管是vc的mfc,cb delphi的vcl,qt的库,最底层都是用的windows的api。它们之间虽然上层的封装形式不同,但是最底层的windows api的调用规则都是一样的,都是遵循windows api的调用规则。....... ( 12:40) ps:好像delphi可以写出c形式的函数。
:ps:好像delphi可以写出c形式的函数。 不明白!....... ( 15:08) c压栈方式的函数。c和pascal的函数的参数入栈的先后顺序不一样。
:感谢以上各位的耐心解答,改为VS2008+QT4.8.6,就可以编写ActiveX控件,供其他Windows平台的exe调用&( 10:49)&对头的, windows平台使用 ActiveX 控件是最简单的.
查看完整版本: [--
Powered by
Gzip disabled在线提问问题标题:问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)C++技术网群幕群聊弹幕GDI和GDI+的应用场合思考
作者:朱金灿
GDI是微软公司的著名的二维图形引擎,GDI+则是微软公司为了提高显示效果而推出的一种新型图形引擎。下面我就我的一些使用经验阐述二者适用的应用场合
GDI基本能满足一般的绘图要求。我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害,挑剔的客户会不满意(注:AutoCAD的绘制二维线应该是使用GDI的,它应该是降低了GDI的锯齿程度,不知它是怎么做到的?但依稀还能看到它的锯齿)。另外在复杂的绘图场合GDI确实不能满足要求,如绘制渐变色的线以及渐变色区域。这时GDI+确实是派上用场了,GDI+的表现效果确实比GDI好得多。但是GDI+的交互性不如GDI。比如GDI+不支持GDI的橡皮筋技术(即GDI的绘图模式)。GDI+不支持绘图模式也很好理解,因为GDI+的设计目标应该是为了取得更好的表现效果,如果支持位运算的绘图模式,势必搞得机制非常复杂。
可能有些同学比较藐视橡皮筋:橡皮筋也称得上是技术吗?确实橡皮筋的原理不复杂,但是它在用户交互中作用比较大。网上一些文章鼓吹使用双缓冲代替GDI的橡皮筋,说实话,这个做法小规模绘图或许可以用用,在一般的正规绘图软件中估计不会用,原因是什么?因为一般的正规绘图软件在整个客户区的绘图就是使用双缓冲绘图的,用户交互绘图本来就是一个随机过程,难不成你为每次用户绘图操作都开辟一个客户区大小的缓冲实现双缓冲区绘图?因此,这个实际上这个并不可行。
GDI+也没有自己的双缓存机制,需要GDI的双缓存机制来支撑,具体是构造内存DC来实现。
在图元比较多的时候GDI+的效率也会成问题,特别是开启反锯齿功能的时候。网上有人测试过GDI+在开启反锯齿时比QT开启反锯齿时慢了不少(他的实验是:分别用GDI GDI+ QT绘制宽度为3的线条999条,发现
GDI无抗锯齿:24ms
GDI+无抗锯齿:86ms
GDI+抗锯齿:800ms+
QT抗锯齿:220ms)
因此我觉得比较好的二维绘图组合是:GDI负责交互绘图以及双缓存的实现,GDI+负责复杂显示效果的实现以及没有用户交互的绘图场合(当然在需要考虑绘图效率的绘图场合斟酌使用)。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 数据库锁表怎么解决 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信