我们已经有了一些内部应用程序建立在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子窗口不会显示出来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top