我正在尝试更改对话框的背景颜色(win 7,vs2010,c ++).
我试图捕捉WM_CTLCOLOR,WM_ERASEBKGND并改变颜色.我设法只捕获WM_ERASEBKGND消息,但是这样我在调试模式下管理,看到我改变了窗口的背景颜色,但是当dialogBox完成上传本身时,颜色被DialogBox的defualt灰色溢出. .
我正在使用CreateDialogParam函数创建DialogBox.
case WM_ERASEBKGND:
{
HBRUSH brush;
RECT rect;
brush = CreateSolidBrush(RGB(255,0,0));
SelectObject((HDC)wParam,brush);
GetClientRect(m_hDlg,&rect)//m_hDlg is HWND type
Rectangle((HDC)wParam,rect.left,rect.top,rect.right,rect.bottom);
break;
}
Run Code Online (Sandbox Code Playgroud)
我试着使用这个功能:
SetBkMode((HDC)wParam,TRANSPARENTE);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
我该怎么办?
你需要处理WM_CTLCOLORDLG.你应该返回刷柄.例如,要使背景为白色:
case WM_CTLCOLORDLG:
return (INT_PTR)GetStockObject(WHITE_BRUSH);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8460 次 |
| 最近记录: |