怎么让对话框的控件透明 我把对话框的背景设置成了一个位图,但是其余部分,比如说静态文本框,滑杆啊什么的那些部分都是一个一个的不透明矩形,怎么把他们弄成透明啊,比如说静态文本框只有文字不透明,其余部分都透明,不要出现一个矩形的不透明的框。我在这些控件的属性设置里面把Transparent打勾了也没用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Details see WM_CTLCOLOR message. SetLayeredWindowAttributes用这个函数 typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); #define WS_EX_LAYERED 0x00080000BOOL CContr0lDlg::OnInitDialog(){........................ SetWindowLong(m_hWnd,GWL_EXSTYLE, GetWindowLong(m_hWnd,GWL_EXSTYLE) | WS_EX_LAYERED); HINSTANCE hInst = LoadLibrary("User32.DLL"); if(hInst) { MYFUNC fun = NULL; fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if(fun) fun(m_hWnd,RGB(255,255,255), 0, (DWORD)1); FreeLibrary(hInst); hInst = NULL; } ::RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);} 重载OnCtrlColor,return一个空画刷 在OnCtrlColor里控件对象.SetBkMode(TRANSPARENT) HBRUSH CYourDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); switch(nCtlColor) { case CTLCOLOR_LISTBOX: return m_hBlueBrush; } return hbr;}nCtlColor以下几种值:WM_CTLCOLORBTN 按钮控件 WM_CTLCOLORDLG 对话框 WM_CTLCOLOREDIT 编辑控件 WM_CTLCOLORLISTBOX 列表框控件 WM_CTLCOLORSCROLLBAR 滚动条控件WM_CTLCOLORSTATIC 静态文本控件 新手求助:怎么给MFC中Ribbon的打开按钮添加返回类型BOOL的响应函数 SetWindowText 背景透明? 看似简单,实则高深的纯学术研究(高手进) 请问下字符串比较的问题 一个很简单的问题``````````` 在static控件中显示图形 请问如何利用Bezier曲线 画出"心"形 请教OPenGL中的坐标和像素的关系,有编程经验的来.... 开心,送分4! 哪里有支持asp的空间 Excel Automation里application属性的设置问题 Excel Automation里application属性的设置问题
用这个函数
#define WS_EX_LAYERED 0x00080000
BOOL CContr0lDlg::OnInitDialog()
{
........................
SetWindowLong(m_hWnd,GWL_EXSTYLE,
GetWindowLong(m_hWnd,GWL_EXSTYLE) | WS_EX_LAYERED);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
MYFUNC fun = NULL;
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)
fun(m_hWnd,RGB(255,255,255), 0, (DWORD)1);
FreeLibrary(hInst);
hInst = NULL;
} ::RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
}
控件对象.SetBkMode(TRANSPARENT)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); switch(nCtlColor)
{
case CTLCOLOR_LISTBOX:
return m_hBlueBrush;
} return hbr;
}
nCtlColor以下几种值:
WM_CTLCOLORBTN 按钮控件
WM_CTLCOLORDLG 对话框
WM_CTLCOLOREDIT 编辑控件
WM_CTLCOLORLISTBOX 列表框控件
WM_CTLCOLORSCROLLBAR 滚动条控件
WM_CTLCOLORSTATIC 静态文本控件