CC问题之一:如何实现控件背景色的透明?? 1. 可以修改MFC中各控件的源码,不过后果...2. 自己从那些控件中派生子类,简单点的话,重载"WM_ERASEBKGND"消息函数时直接返回TRUE就可以了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 THANK ntu,还有没有更直接点的??我记得好像见过一种更简单的方法,不过现在忘光光了,哈。提个醒吧!(书到用时方恨多!!!) 透明?透到那去.要是透到桌面上.我可不知.要能实现可真开眼.CBUTTON.你可以用MOVEMOUSE.PTINRECT .DRAW3DRECT.LBUTTONDOWN.我就是这样用的.方便.,CLISTTREE.也是能看到背景吗?补个位图. HBRUSH YourFormView/*YourDialog*/::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { switch (nCtlColor) { case CTLCOLOR_BTN://按钮? { pDC->SetBkMode(TRANSPARENT);//透明 } case CTLCOLOR_STATIC://静态 { pDC->SetBkMode(TRANSPARENT);//透明!!!!!!! } case CTLCOLOR_DLG: { CBrush* back_brush; COLORREF color; color = (COLORREF) GetSysColor(COLOR_BTNFACE); back_brush = new CBrush(color); return (HBRUSH) (back_brush->m_hObject); } } return(CFormView/*CDialog*/::OnCtlColor(pDC, pWnd, nCtlColor));}以上来自MFC FAQ in MSDN Static Text 是可以直接透明的,但是Button 这类不可能直接透明,除非自己写类;CBrush m_HollowBrush;m_HollowBrush.CreateStockObject(HOLLOW_BRUSH);HBRUSH CDlgBmp::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor == CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT); return HBRUSH(m_HollowBrush); } return hbr;}m_HollowBrush 为dialog的成员变量,事先生成的透明刷子 试一试::SetClassLong(hWnd,GCL_HBRBACKGROUND,NULL)hWnd 控件窗体句柄 MFC程序,重复使用函数中断 100分,麻烦几分钟帮写一个小程序,谢谢。------------ 标题要长! 对话框程序中建立MDI窗体 求教如何画流线 *********** 第一次亲密接触 --- 压缩 !*********** 求教!!!! 我用VC60+WIN2000为什么编译BCGBARTOOLS出现很多错误 怎么样才能让窗口总在前面,用VC! 请教关于打印的问题 还有没有比CSDN更人气的专家论坛?(不给分,呵呵) 为何我按下对话框右上角的X不能关闭对话框? 关于ISAPI出错的问题
我记得好像见过一种更简单的方法,不过现在忘光光了,哈。提个醒吧!
(书到用时方恨多!!!)
CBUTTON.你可以用MOVEMOUSE.PTINRECT .DRAW3DRECT.LBUTTONDOWN.我就是这样用的.方便.,
CLISTTREE.也是能看到背景吗?补个位图.
{
switch (nCtlColor)
{
case CTLCOLOR_BTN://按钮?
{
pDC->SetBkMode(TRANSPARENT);//透明
}
case CTLCOLOR_STATIC://静态
{
pDC->SetBkMode(TRANSPARENT);//透明!!!!!!!
}
case CTLCOLOR_DLG:
{
CBrush* back_brush;
COLORREF color;
color = (COLORREF) GetSysColor(COLOR_BTNFACE);
back_brush = new CBrush(color);
return (HBRUSH) (back_brush->m_hObject);
}
}
return(CFormView/*CDialog*/::OnCtlColor(pDC, pWnd, nCtlColor));
}以上来自MFC FAQ in MSDN
m_HollowBrush.CreateStockObject(HOLLOW_BRUSH);HBRUSH CDlgBmp::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC) {
pDC->SetBkMode(TRANSPARENT);
return HBRUSH(m_HollowBrush);
}
return hbr;
}m_HollowBrush 为dialog的成员变量,事先生成的透明刷子