100分,对话框上显示背景图片
我显示一个大的非模式对话框,想在对话框上显示一个背景图片,在OnPain()中有以下代码:
void CInStorageDlg::OnPaint()
{
CPaintDC dc(this);
CRect rectClient;
GetClientRect(rectClient);
CBrush brush;
brush.CreatePatternBrush(CBitmap::FromHandle(hBitmapStoragesBkGnd));
dc.FillRect(rectClient,&brush);
}
结果是先出现对话框的灰色背景,再出现图片。请教大侠,如何不用先出现灰色背景,即可出现图片?
问题点数:100、回复次数:9Top
1 楼panda_w(好想睡啊!)回复于 2001-03-21 15:48:00 得分 50
可能是OnPaint的级别比较低的缘故吧
一般情况下,放置图片背景的工作都在WM_CTLCOLOR和ON_WM_ERASEBKGND消息函数中处理Top
2 楼JJONY()回复于 2001-03-21 16:38:00 得分 10
有这样一个消息:WM_ERASEBKGND CWnd::( CDC* pDC )
你就对pDC做操作背景不就可以了吗?
我以前重画对话框就是这样做的。Top
3 楼kevin_gao(困了!累了!睡觉了!)回复于 2001-03-21 16:41:00 得分 0
关注!Top
4 楼deadhorse(死马)回复于 2001-03-21 17:12:00 得分 30
将WM_ERASEBKGND消息映射,然后返回TRUE
或者直接在WM_ERASEBKGND中画,OnPaint中不要做事Top
5 楼lttltgr(小虎子)回复于 2001-03-21 18:51:00 得分 5
deadhorse说得没错Top
6 楼joke100(咱们去SLEEP吧...)回复于 2001-03-21 21:16:00 得分 5
在MFC程序中重载WM_CTLCOLOR或ON_WM_ERASEBKGND
在SDK程序中可以注册一个带背景位图画刷的窗口类,这样背景就总是那张位图啦...
Top
7 楼little_wolf(小狼)回复于 2001-03-22 08:20:00 得分 0
关注!Top
8 楼myb123(myb123)回复于 2001-03-22 10:13:00 得分 0
Thank you for your help!!
请原谅,我只有100分,
以后我会记住大家,有机会再多给
嘿嘿...Top
9 楼Schuman()回复于 2001-03-22 10:19:00 得分 0
对呀,如果你想在对话框背景上再画点什么的话,最好是从最上层开始画,并逐步抠掉rgn,才不会闪烁Top




