急。。。。。。。。。。为什么无法改变MFC对话框的背景颜色? 我在InitInstance()使用SetDialogBkColor(RGB(10,10,10),RGB(13,10,10))修改MFC对话框的背景颜色,为什么不成功? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 增加WM_CTLCOLOR消息,在消息响应函数里面修改颜色 xiangrujian(还不结帖)??/???能否讲得详细点呢?在哪个响应函数里增加消息? http://sanjianxia.diy.myrice.com/vc/vc37.htm 或者BOOL CColorApp::InitInstance(){.........CColorDlg dlg;m_pMainWnd = &dlg;SetDialogBkColor(RGB(200,100,100),RGB(100,100,200)); //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}注意位置 如何影射CTLCOLOR_DLG 对话框消息? 我已经按照以下办法,但还是改变不了,是不是我乱设置对话框的什么属性了?或者BOOL CColorApp::InitInstance(){.........CColorDlg dlg;m_pMainWnd = &dlg;SetDialogBkColor(RGB(200,100,100),RGB(100,100,200)); //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}注意位置 重载WM_CTLCOLOR消息HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pWnd==this) return CreateSolidBrush(RGB(0,0,0)); return hbr;} 到C**App类的InitInstance函数中: CTestDlg dlg; m_pMainWnd = &dlg; SetDialogBkColor(RGB(255,0,0));//在这个位置添加这一句 int nResponse = dlg.DoModal(); SetDialogBkColor(RGB(255,0,0),RGB(0,255,0));把这句代码加到CYourApp类的InitInstance函数的末尾,即return TRUE;之前就可以了的 重载WM_CTLCOLOR消息接分。分不在多 重载对话框的WM_ERASEBKGND消息不就完了嘛! 结解这个问题的方法:1.声明一个全局变量CBrush m_bgBr;2.在对话框的构造函数中XXXDialog::XXXDialog(){ m_bgBr.CreateSolidBrush(RGB(0,0,0));//把这个值设置你需要的背景色的值}3.生成处理WM_CTLCOLOR的函数4.在函数HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if(pWnd==this) return m_bgBr;return hbr;}第二种方法:1.生成处理WM_ERASEBKGND消息的事件2.在OnEraseBkGnd函数中:CDC *pDC;pDC=GetDC();CRect WndRc;GetWindowRect(&WndRc);CBrush BgBr;BgBr.CreateSolidBrush(RGB(0,0,0));//生成你需要的颜色pDC->SelectObject(&BgBr);pDC->FillRect(&WndRc);Return TRUE; 如何让对话框上的控件反向排布? vc中项目执行问题,紧急!! 请教,关于VirtualAlloc()函数 请问大家,这两个东东效率是否一样? 请教各位,如何取得硬盘序列号? 为何在全局钩子中设置鼠标的速度后,鼠标速度却无变化? 怎么画不出来。 哪里有 远程控制 如何获取光盘的信息? menu到底是什么时候创建的?InitInstance()之前? 如何实现自定义菜单的功能 请教:标准C写的静态链接库链接出现了问题
能否讲得详细点呢?
在哪个响应函数里增加消息?
BOOL CColorApp::InitInstance()
{.........CColorDlg dlg;
m_pMainWnd = &dlg;
SetDialogBkColor(RGB(200,100,100),RGB(100,100,200)); //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}
注意位置
或者
BOOL CColorApp::InitInstance()
{.........CColorDlg dlg;
m_pMainWnd = &dlg;
SetDialogBkColor(RGB(200,100,100),RGB(100,100,200)); //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}
注意位置
HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd==this)
return CreateSolidBrush(RGB(0,0,0));
return hbr;
}
CTestDlg dlg;
m_pMainWnd = &dlg;
SetDialogBkColor(RGB(255,0,0));//在这个位置添加这一句
int nResponse = dlg.DoModal();
1.声明一个全局变量CBrush m_bgBr;
2.在对话框的构造函数中
XXXDialog::XXXDialog()
{
m_bgBr.CreateSolidBrush(RGB(0,0,0));//把这个值设置你需要的背景色的值
}
3.生成处理WM_CTLCOLOR的函数
4.在函数
HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd==this)
return m_bgBr;return hbr;
}第二种方法:
1.生成处理WM_ERASEBKGND消息的事件
2.在OnEraseBkGnd函数中:
CDC *pDC;
pDC=GetDC();
CRect WndRc;
GetWindowRect(&WndRc);
CBrush BgBr;
BgBr.CreateSolidBrush(RGB(0,0,0));//生成你需要的颜色
pDC->SelectObject(&BgBr);
pDC->FillRect(&WndRc);Return TRUE;