响应对话框的WM_CTLCOLOR消息
HBRUSH CxxxDlg::OnCtlColor(...)
{
...
if(nCtlColor==目标控件ID)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
...
}Top
4 楼allenhiman(9Ft)回复于 2006-04-28 14:45:04 得分 0
楼上的方法可行吗?
我感觉没那么简单?
有人测试没?Top
5 楼tfq2002(天涯闲游)回复于 2006-04-28 15:57:27 得分 0
to: fisker0303(天塌了,地陷了,小花狗不见了.)
这种方法是可以解决改变CEdit框的背景色,让CEdit框的底色不再是白色
但不能实现楼主所说的透明效果Top
6 楼zoulie(落伍者)回复于 2006-04-28 21:09:20 得分 0
试试SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags)
使窗体拥有半透明效果,Window2000以上才支持.Top
7 楼chib(天宇)回复于 2006-04-29 15:37:12 得分 0
OnCtlColor(...) 添加
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
所有的static透明Top
8 楼Snow_Ice11111(雪上加冰)回复于 2006-04-29 16:11:19 得分 0
对话框的WM_CTLCOLOR消息中用大家给的方法只能让Static、ListBox(包括ComboBox的下拉框)、TreeCtrl等控件透明显示,Edit不能用这种方法,只能自己用窗口背景图片的相应部分图案自绘它了。Top
9 楼tomtom123(abc)回复于 2006-04-30 00:37:20 得分 0
MARKTop
10 楼MLiang(俺想有栋房)回复于 2006-04-30 09:09:37 得分 0
Edit控件可以用这种方法,很奇怪的是Edit控件属于CTLCOLOR_STATICTop
11 楼zh2817()回复于 2006-04-30 10:18:28 得分 0
http://www.vckbase.com/document/viewdoc/?id=182Top