屏幕捕捉不工作上的MFC应用程序在Vista
-
01-07-2019 - |
题
我们已经有了一些内部应用程序建立在MFC,载绘图程序。它们都使用同样的代码,在屏幕上绘制和印屏幕上或保存到一个JPEG文件。一切都是工作现在Windows XP,我需要找到一种方法,使他们的工作。
在我们三个应用程序,一切工作。在剩余的一个,我可以得到窗边界,标题吧,菜单和任务吧,但是内部从来没有显示出来。正如我所说,这些应用程序的使用完全相同的代码写的屏幕捕捉窗口的图像,而只差我看到,看起来它可能是相关的是,该问题应用程序使用MFC多个文件的接口,同时将那些工作使用的单一文件的接口。
无论是回答不上网,或者我更糟的是,在谷歌上搜索比我想象的。我要求在MSDN论坛,唯一切实可行的建议,我是使用GDI+而不是GDI,这并没有什么不同。我已经尝试不同的东西,每一部分代码捕获和打印或储存,给出一个指向窗口,因此显然这是一个问题的窗口。我还没有重建问题的应用程序使用SDI然而,我真的没有任何其他想法。
有没有人见过这样的事情?
我有什么是四个应用程序。他们使用了大量的通用代码,以及分享实际的。h。cpp文件,所以我知道绘图和屏幕捕捉码是相同的。
有一个WindowtoDIB()程序,需要一个*仙居府的那棵大树,以及源矩形和目标的大小。它看起来像略非常适于微软的代码,我已经找到了其他职能在这个文件上,Microsoft的网站。我的四个应用程序,三个处理这只是罚款,但一个不可行。最明显的差异是一个问题是MDI。
它看起来我喜欢的*仙居府的那棵大树就是问题所在。我不是一个MFC师通过一个长枪,我看来,问题可能是,我们已经有了一个窗口设置在空间数据基础设施,以及多于一个在MDI。我可能传递错误*仙居府的那棵大树的功能。
与此同时,它已经开始正常工作上的64位Vista测试机器,尽管它仍然无法工作32-位Vista机。我不知道为什么。我还没改变任何东西,因为最后的测试,我没有想任何人。(在32位的版本,印屏幕关键的作品作为预期的,但它不保存视为一个JPEG。)
解决方案 5
我们最终解决了这个通过创建一个不同的照片背景下,和绘制一切。我们放弃了在屏幕上捕获。
其他提示
你的问题提到屏幕捕捉,但你实际问题没有。请详细阐述更加清楚。问题是你可以做的屏幕捕捉到的三个应用程序,但不是第四个?你可以使用不同的屏幕捕获的软件,可以捕捉载/安装窗户。那些表面处理直接通过该窗口的管理而不会显示一个简单的'PrtScn'.
切换到GDI+不会解决它,也不会切换到SDI。
如果它的内容CView你想要的,那么是的,这应该是正确的。如果它的内容的整个屏幕(至少该内容,没有工具栏(s)和状态条),然后你应该通过它的微(这是默认的名称可能已经被改变了,一个是来自CMDIFrameWnd).
你能后代码的WindowToDIB()?我只是试着它,它为我工作(TM),但没有照片的代码。尝试过下列windows你WindowToDIB()function:
微* mainfrm = static_cast<CMainFrame*>(::AfxGetMainWnd());
- mainfrm
- mainfrm->MDIGetActive()
- mainfrm->MDIGetActive()->GetActiveView()
看看你得到的是什么。
每个内容的窗户都安装面和仅仅是组装的窗口管理的绘图卡片。你会不能够捕捉到这一点,除非你关掉新界面(梦工场)或码具体而言为屏幕捕捉从梦工场.
维基百科有一个很好的说明 桌面窗口管理(梦工场)
对不起,我还是不明白。你想得到的印屏幕上工作的关键在所有四个应用程序?或者你试图获得WindowtoDIB()function工作,这需要'的截图'(从自己的应用程序)的应用程序本身,所以,它可以保存作为图像文件?
还有,你什么意思与他打印屏幕关键的作品作为预期的,但它不保存视为JPEG.'?印屏幕仅器,会发生什么时候粘贴在画画吗?
如果你WindowtoDIB()function only'捕获'窗口,你通过它,然后是的,你MDI子窗口不会显示出来。