Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在屏幕C++上绘制文本_C++_Text_Draw_Gdi - Fatal编程技术网

在屏幕C++上绘制文本

在屏幕C++上绘制文本,c++,text,draw,gdi,C++,Text,Draw,Gdi,我想在所有窗口上方的屏幕上绘制文本。 我发现了HDC并开始使用它。我有两个问题:文本闪烁,有背景。我发现了这个函数: SetBkMode(hdc, TRANSPARENT); 但它所做的只是取消闪烁。我还是有背景的。我现在的最终代码是: RECT rect = { 20, 20, 200, 200 }; SetTextColor(hdc,RGB(255,0,0)); SetBkMode(hdc, TRANSPARENT); SetBkColor(hdc,RGBA

我想在所有窗口上方的屏幕上绘制文本。 我发现了HDC并开始使用它。我有两个问题:文本闪烁,有背景。我发现了这个函数:

SetBkMode(hdc, TRANSPARENT);
但它所做的只是取消闪烁。我还是有背景的。我现在的最终代码是:

    RECT rect = { 20, 20, 200, 200 };
    SetTextColor(hdc,RGB(255,0,0));
    SetBkMode(hdc, TRANSPARENT);
    SetBkColor(hdc,RGBA(0,255,0,0));
    DrawText(hdc, L"My text",-1,&rect,DT_LEFT);
我把这个代码放在whiletrue语句中,然后睡眠1毫秒。 在我得到hdc初始化之前:

HDC hdc = GetDC(0);
所以在这一点上,我得到了非闪烁文本,但背景不透明。 背景是半透明的,所以我可以看到它下面的东西,但它不会更新。当我在下面放一个新窗口时,我可以看到旧窗口的背景

我试着在这个问题中使用wndproc: 但它一点作用也没有我甚至看不见文本 我尝试使用msdn站点上的textout示例: 但它也没什么作用

如何在没有背景的情况下在屏幕上绘制文本?
谢谢大家

我以前从未使用过这个,但是如果删除SetBkColor函数会发生什么?使用CreateSolidBrush和FillRect清除背景。搜索双缓冲区以避免闪烁。John-它没有任何效果看起来是相同的Wimmel-如果我填充rect,它将绘制矩形并隐藏背景,我不想隐藏它。或者我不理解你correctly@user2462683啊,我误解了。你想要的是有点难,但看看你已经使用RGB与SetTextColor,但RGBA与SetBkColor。。。为了清晰起见,如果您没有设置alpha值,我建议您选择一个或另一个RGB作为首选。但是我不认为这能解决你的问题。。。