对话框背景刷新问题,急!

Kerrie 2000-08-03 10:38:00
我要用一副图片作为对话框的背景,

在对话框OnEraseBkgnd中用
{
pDC->BitBlt(...)
}
画上图片。

重载OnCtlColor
{
...
pDC->SetBkMode( TRANSPARENT );
return (HBRUSH)GetStockObject( HOLLOW_BRUSH );
}
设置对话框上所有控件透明

这样的话在某些情况下部分控件刷新不正常,如拉动CListBox的滚动条或者在CEdit中用鼠标选择
文字的时候都不正常,如这时窗口隐藏再重现就会都到正常的结果,
因为别的原因,我不能重载各控件类来处理,只能在父对话框中改动,请问那位知道的指点一下迷津
感激不尽!!!
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2000-08-05
  • 打赏
  • 举报
回复
关于划分子类,你可以参考一下讲API编程的书。
lisicheng 2000-08-04
  • 打赏
  • 举报
回复
用flashwindow函数应可以实现其刷新
Kerrie 2000-08-04
  • 打赏
  • 举报
回复
划分子类,是重载吗?我对这个不清楚,Areslee兄讲详细一点好吗?多谢!!
Areslee 2000-08-04
  • 打赏
  • 举报
回复
对子控件用划分子类试试
Kerrie 2000-08-04
  • 打赏
  • 举报
回复
多谢softsprite兄的相助。

这个例子我看过了,它只对CStatic作了透明处理,我程序的要求是对
所有的可以透明的控件都做处理,而且这种静态的显示用我上面的那几句话可以处理了。

现在的问题的是:如果控件自己刷新的时候,如上面说的CListBox和CEdit的情况,才会出问题,
我想要是我能自己清除对话框的背景,再重画一边的话,就可以了。
控件各种刷新情况都回调用父对话框的OnCtlColor,因此,这种重画不能触发window的相应的
刷新消息!
或者那位大侠有别的办法!!

再次谢谢softsprite兄!

U皮特U 2000-08-03
  • 打赏
  • 举报
回复
下面的源码例子提供一个位图对话框类,可以直接使用。好好看看吧!
http://codeguru.earthweb.com/dialog/BmpDlg_Demo.zip

16,467

社区成员

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

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

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