MFC擦除对话框背景使之透明 但是对话框内图片无法随对话框移动刷新

我用的是
HBRUSH CClipDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

pDC->SetBkMode(TRANSPARENT);
return hbr;
}

BOOL CClipDlg::OnEraseBkgnd(CDC* pDC)
{
return true;
//return CDialog::OnEraseBkgnd(pDC);
}

第1个回答  2011-04-14
直接联系我本回答被提问者采纳

MFC在对话框上画图,怎么实现对话框背景透明,但画的图不透明。
本身来说,对话框背景透明是在OnEreaseBackgroud或者对应消息截取中实现的,而普通的绘图,是在OnPaint或者对应消息中实现的,两者并不冲突,背景透明不会影响绘图。你所说的,应该是这样一个话题吧:怎样根据对话框背景图片设置异形窗口。这个话题比较经典,核心是SetWindowRgn等函数的使用,实现方法,可以用现...

MFC,基于对话框的程序,对话框被全部遮挡然后重现,系统不发送WM_PAINT...
OnPaint是需要触发的,你移动别的窗口是不会触发自己窗口的刷新的。只要之后的操作调用刷新接口,比如OnLButtonDown中调用Invaludate(),鼠标左键点击的时候就可以重新出现了

MFC如何使picture控件的图片随着对话框的大小改变而改变
1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);3、在WM_SIZE的响应函数OnSize()中加入以下代码:CWnd *pWnd;pWnd = GetDlgItem(IDC_LIST); \/\/获取控件句柄 if(pWnd)\/\/判断是否...

MFC 对话框图片控件中绘图刷新的问题
“双缓存”是OpenGL里用的防止屏幕闪烁的方法.一般的不好解决,有点复杂.还不如想其他办法画图,或者去学习其他做图方法,比如OpenGL.Active等.那些画出来效果要好很多,可以去看下.

MFC 对话框 PNG背景 部分透明
利用layered window 注意OnInitDialog和OnPaint里添加的代码。我把透明色设置为RGB(1, 1, 1)了,图片里原有的RGB(1, 1, 1) 我给调成 RGB(0, 0, 0) 了。

mfc中让编辑框透明为什么总显示黑色背景的编辑框啊?
你用什么方式让编辑框透明?贴图片,并使用关键色?编辑框是透明了,但是因为编辑框后面是对话框,而对话框虽然是白色的,但是对话框刷新背景时只刷新没有编辑框的部分,所以编辑框覆盖的那块对话框没有刷新,当然是黑色的。这说明你编辑框的确有透明掉,但你刷新背景时应该整个对话框都刷新 ...

...使用状态栏用SetBkColor(RGB(0,162,255));为什么不能改变背景...
不知道你要改变的是对话框背景颜色还是状态栏颜色,没做过基于对话框的,做过基于单文档的状态栏,pstatusbar->GetStatusBarCtrl().SetBkColor(RGB(255,1,255));好使。pstatusbar->SetPaneText(4,text); 改变文字

MFC如何使picture控件的图片随着对话框的大小改变而改变
图片随着对话框放大,只能使用图像放缩了,这个会产生一定的失真。方法其实很简单,涉及两个方面:将所有图片显示代码中,使用BitBlt改为 StretchBlt(需要调整两个参数,见2)StretchBlt放缩显示,有两个新参数,就是目标区域大小,这个就需要你根据实际情况进行坐标运算了,或者是控件计算好的比例,或者是...

请教大家一个mfc的问题,如何让图片充满整个对话框
回答:等于对话框大小。

50分求教MFC对话框中双缓冲绘图避免闪烁的问题
然后每次先把背景DC画到缓冲DC上:m_dcMem.BitBlt(0, 0, m_nWidth, m_nHeight, &m_dcBack, 0, 0, SRCCOPY);然后再画自己的东西 m_dcMem.XXXXXX (如果不需要背景DC,则直接把内容画到缓冲DC上)最后记得在OnPaint里将缓冲DC画到实际的窗口上:GetDC()->BitBlt(m_nLeft, m_nTop, m...

相似回答