我正在编写一个截取屏幕截图的C ++程序。我从here借用了屏幕截图功能并设置了一个链接选项-mwindows
,就像网页提到的那样,然后发生了一些事情。设置链接器选项后,cout
停止显示我的文本。
在设置链接器选项之前,这是我的代码:
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char** argv) {
cout << "test\n";
while (true) {
cout << "test2\n";
}
system("pause");
return 0;
}
这是函数screenshot
以及链接器选项-mwindows
:
void screenshot(POINT a, POINT b) {
// copy screen to bitmap
HDC hScreen = GetDC(NULL);
HDC hDC = CreateCompatibleDC(hScreen);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreen, abs(b.x-a.x), abs(b.y-a.y));
HGDIOBJ old_obj = SelectObject(hDC, hBitmap);
BOOL bRet = BitBlt(hDC, 0, 0, abs(b.x-a.x), abs(b.y-a.y), hScreen, a.x, a.y, SRCCOPY);
// save bitmap to clipboard
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
// clean up
SelectObject(hDC, old_obj);
DeleteDC(hDC);
ReleaseDC(NULL, hScreen);
DeleteObject(hBitmap);
}
到目前为止我所知道的是,该计划运行良好,除了cout。
正确截取屏幕截图,无限循环正在运行,如果我添加它,通过fstream写文件也没问题。
如果我在任何地方调用屏幕截图或者从不调用它(但是声明了屏幕截图),事情就不会改变,cout
仍然没有显示任何内容。
所以问题不在于screenshot
功能。
system("pause")
会显示其文本。
如果有人告诉我为什么链接器选项会阻止cout
工作,那将会很有帮助。或者我以错误的方式使用链接器选项? (我认为这几乎是不可能的,因为screenshot
函数完美运行)
我正在使用Dev-C ++ 5.11进行编码。我通过将-mwindows
添加到项目选项&gt;来设置链接器选项。参数&gt;接头即可。
如果设置了链接器选项,我怎样才能让cout正常工作,这样我可以截取屏幕截图?任何信息,将不胜感激。 谢谢。
修改:根据我的进一步测试,printf
与cout
具有相同的行为,在控制台上没有显示任何内容。