对话框加上属性“Clip children”
解决方案 »
- 怎样去给一个界面发一个关闭的消息?
- 跟大家分享也给自己记录
- 如何 监视 动态网页 变化
- 如何将bezier曲线离散成若干圆弧?
- 如何实现“客户端<-->服务端<-->数据库”结构的程序?
- 怎样将两个独立的工程完美地结合在一起呀?
- 如何插入另一个程序中的对话框类,插入现有项.cpp.h文件后没有对话框资源 怎么办?
- 请问在监测串口的时候双方的协议不一样是否可以收到对方发过来的流
- 谁帮我把这个VC代码注释下 76分相送
- MFC 问题 怎么在CView里添加 WM_BUTTONDOWN消息?目前我只会在对话框里添加鼠标点击消息,求帮助,新手求助!!!
- VC++6.0有没有过时呀,现在学是不是落后时代了?
- 一个dll导出多个类
2.如果是纯色也很好办(哪怕每个控件不一样),用图片比较麻烦,Clip children可以不要,但要在对话框重绘时调用控件重绘。
3.自绘控件类可能要好些。
4.用其它第三方的皮肤类或库。
http://www.codeproject.com/combobox/TransListBox.asp
http://www.codeproject.com/gdi/brush_skin.asp
它们都是截取了对话框出现之前原屏幕的内容,而不是对话框背景图在该位置的内容!搞了半天,最后我发现如果将对话框的 clip children 风格重新勾上,所有的控件就真正对背景图片透明了!! 这个风格害死人啊!但是原来的问题又回来了,现在所有的控件又到背景图片下面去了,只有鼠标划过的时候才能看到!到底怎么样把所有控件显示在最上层,而且不动用clip children风格呢?clip children到底是什么意义?会不会是我的绘图代码有问题?
大家帮忙看一下,问题解决马上散分!代码如下:BOOL CCATDlg::OnEraseBkgnd(CDC *pDC)
{ if(IsBackGroudImage)
{
CFile file(strFilePathName,CFile::modeRead|CFile::shareDenyWrite);
CArchive ar(&file,CArchive::load|CArchive::bNoFlushOnDelete);
CArchiveStream stream(&ar);
HRESULT hr = OleLoadPicture((IStream*)&stream, 0, FALSE, IID_IPicture, (void **)&m_pPic);
file.Close();
CRect ShowRect;
pDC = GetDC();
GetClientRect(&ShowRect);
long lWidth,lHeight;
m_pPic->get_Width((OLE_XSIZE_HIMETRIC*)&lWidth);
m_pPic->get_Height((OLE_YSIZE_HIMETRIC*)&lHeight);
CDC tempDC;
tempDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,ShowRect.Width(),ShowRect.Height()); CBitmap *OldBmp=tempDC.SelectObject(&bmp);
m_pPic->Render(tempDC, 0, 0, ShowRect.Width(), ShowRect.Height(), 0, lHeight, lWidth, -lHeight, NULL);
m_pPic->Release(); pDC->BitBlt(ShowRect.left, ShowRect.top, ShowRect.Width(), ShowRect.Height(), &tempDC, 0, 0, SRCCOPY);
tempDC.SelectObject(OldBmp);
ReleaseDC(&tempDC);
bmp.DeleteObject();
return true; }
else
{
return CDialog::OnEraseBkgnd(pDC);
}
}