CDC绘图无显示?

DailyJob 2008-12-24 10:10:02
派生CWnd的窗口类Clovetoyou
cdc获取成功了为什么没有显示文字???
在OnPaint里显示文字就没有问题.
BOOL CLovetoYou::Create()
{
if (NULL == lpClassName)
{
lpClassName = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));
}
CRect rect(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
//创建独占全频窗口
CreateEx(WS_EX_TOPMOST,lpClassName,_T(""),WS_VISIBLE | WS_POPUP,
rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,
GetSafeHwnd(),NULL,NULL);
//播放视频
if(!PlayAVI())
{
exit(0);
return FALSE;
}
while (m_DvePlay.IsPlaying())
{
//视屏播放完毕
}

m_DvePlay.Stop();
m_DvePlay.Close();
//显示文字
ShowLove();
return TRUE;
}
BOOL CLovetoYou::ShowLove()
{
CDC *pDC = GetDC();
// CreateThread(NULL,0,PlayThread,(LPVOID)&pDC,0,NULL);
pDC->SetTextColor(RGB(255,0,0));
pDC->TextOut(50,50,"love");
ReleaseDC(pDC);

return TRUE;
}
...全文
132 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2008-12-24
  • 打赏
  • 举报
回复
GetTextExtent,坐标自己保存。
DailyJob 2008-12-24
  • 打赏
  • 举报
回复
用TextOut或者DrawText输出文字...
有什么好用的获得文字区域的函数没?
已经将显示文字部分移动到OnPaint里了.
cnzdgs 2008-12-24
  • 打赏
  • 举报
回复
问题是你显示之后,在窗口刷新时又被刷掉了,所以看不到。如果不通过WM_PAINT消息来处理,可以等窗口刷新后再显示,创建窗口之后先ShowWindow、UpdateWindow,然后再显示。
一条晚起的虫 2008-12-24
  • 打赏
  • 举报
回复
比如我在某某位置显示一段未知长度的文字,有什么函数可以获得 这段文字的区域?

//怎么输出的?
DailyJob 2008-12-24
  • 打赏
  • 举报
回复
看来没有其他什么好方法了. 我就试试这个好了...
有什么获得绘图区域的函数没?刷全屏不太合理, 画面闪动也太大了
比如我在某某位置显示一段未知长度的文字,有什么函数可以获得
这段文字的区域?
DailyJob 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhucde 的回复:]
在OnTimer中加入Invalidate(0)来强制重刷
[/Quote]
字会刷没了~
[Quote=引用 6 楼 Mackz 的回复:]
不管你有什么目的,都应该在WM_PAINT消息中绘图;可以通过变量控制是否显示啊。你的方法最终还是被刷新掉了。
[/Quote]
还有其它方法吗? 实在没有我会考虑这个方法的~
一条晚起的虫 2008-12-24
  • 打赏
  • 举报
回复
在WM_PAINT中绘图。显示一会儿,用定时器控制,时间到,重新绘制,不写文字。
菜牛 2008-12-24
  • 打赏
  • 举报
回复
不管你有什么目的,都应该在WM_PAINT消息中绘图;可以通过变量控制是否显示啊。你的方法最终还是被刷新掉了。
zhucde 2008-12-24
  • 打赏
  • 举报
回复
在OnTimer中加入Invalidate(0)来强制重刷
kier2 2008-12-24
  • 打赏
  • 举报
回复
CDC *pDC = GetDC();
换成getpaintdc看看,还有就是注意看在你想显示文字的时候是不是有其他窗口重绘的情况发生
DailyJob 2008-12-24
  • 打赏
  • 举报
回复
恩? 问题还挺有难度???还以为很简单了@@!
DailyJob 2008-12-24
  • 打赏
  • 举报
回复
但是我不想在OnPaint中做, 我想让文字显示一会就消失,我还得做其它操作
xiang_yun 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 DailyJob 的帖子:]
派生CWnd的窗口类Clovetoyou
cdc获取成功了为什么没有显示文字???
在OnPaint里显示文字就没有问题.
[/Quote]
如果要一直存在,绘图一定要在OnPaint中做!!
因为重画的时候,只会重画OnPaint中的内容

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧