![]() |
1
1
你的问题标题提到屏幕截图,但你的实际问题没有。请详细说明。您是否可以对三个应用程序进行屏幕捕获,而不是第四个应用程序?您可以使用不同的屏幕捕获软件来捕获OpenGL/DirectX窗口。这些表面由窗口管理器直接处理,不会显示为简单的“prtscn”。 切换到gdi+既不能解决问题,也不能切换到sdi。 |
![]() |
2
1
如果你想要的是cView的内容,那么是的,应该是正确的。如果它是整个屏幕的内容(至少是内容,没有工具栏和状态栏),那么您应该将cmainframe传递给它(这是可能已更改的默认名称,是从cmdiframewnd派生的名称)。 你能发布windowtodib()的代码吗?我刚试过,它对我(tm)有效,但视图中没有OpenGL代码。尝试将以下窗口传递给WindowToDib()函数:
主机架*
看看你得到了什么。 |
![]() |
3
0
每个窗口的内容都是DirectX曲面,仅由图形卡中的窗口管理器组装。除非关闭新接口(dwm)或专门用于从dwm捕获屏幕的代码,否则无法捕获此内容。 |
![]() |
4
0
对不起,我还是不明白。你想让打印屏幕键在所有四个应用程序上工作?或者您正在尝试让windowtodib()函数工作,它将获取应用程序本身的“屏幕截图”(在您自己的应用程序中),以便将其保存为图像文件? 另外,“打印屏幕键按预期工作,但不将屏幕保存为jpeg”是什么意思?打印屏幕只复制到剪贴板,当你在画图中粘贴时会发生什么? 如果windowtodib()函数只“捕获”传递给它的窗口,那么是的,MDI子窗口不会出现。 |
![]() |
5
0
我们最终通过创建一个不同的OpenGL上下文来解决这个问题,并将所有内容都绘制到这个上下文中。我们放弃了截屏。 |
![]() |
JoeZ · Do while循环不会中断 6 年前 |
![]() |
JoeZ · 如果循环不工作。运行时显示重复cout。 6 年前 |
![]() |
Joe · 正在展开宏以进行调试? 6 年前 |
|
Matthew · 自己编译公共库会提高性能吗? 6 年前 |
![]() |
Barry · 在MSVC中处理宏中的额外括号 6 年前 |