ProgJ
2016-02-12 07:42
采纳率: 88.1%
浏览 1.9k

MFC非客户区的刷新及防闪烁问题

弄重绘标题栏的时候遇到了问题。。
按钮贴图什么的都好了。但是在标题栏写“菜单”项的时候遇到了刷新的问题。
“菜单”项我是用pDC->DrawText()写上去的(“菜单”是两个字而不是按钮啥的)。
希望的效果是实时追踪鼠标的位置,若鼠标指在“菜单”所在矩形区域时就把俩字变色显示
于是我就先把之前写的字覆盖掉再重新写
但是这样就出现闪烁了。。
各位有没有好办法解决一下。。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 91program 2016-02-12 08:09
    已采纳

    防闪烁的基本做法就是使用双缓冲,最后显示文字时先绘制在显示缓存中,最后一次刷新显示。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • ProgJ 2016-02-12 11:20

    CDC* pDisplayMemDC = new CDC; //缓冲区DC
    pDisplayMemDC->CreateCompatibleDC(pDC);
    pDisplayMemDC->SetBkMode(TRANSPARENT);

    CFont v_font1;
    v_font1.CreatePointFont(132, "楷体GB_2312", pDisplayMemDC);
    CFont* oldfont = pDisplayMemDC->SelectObject(&v_font1);

    //绘制标题
    pDisplayMemDC->DrawText(_T("XXXXXXX"), CRect(m_rtIcon.right - 2, GetSystemMetrics(SM_CYFRAME) + 4, 400, GetSystemMetrics(SM_CYSIZE) + 60), DT_NOCLIP | DT_SINGLELINE);

    然后怎么把其文字显示到dc中。。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题