重载OnCtlColor函数不能改变对话框的背景色???在线等

我继承CDialog新建一个对话框类,并重载OnCtlColor函数,返回一个其它颜色的句柄,但是却不能改变对话框的背景色,为什么???????

这个OnCtlColor在什么情况下使用呢????

我该如何改变对话框的背景色????

我的代码如下:
C/C++ code

#pragma once


// CTestBkColorDlg 对话框

class CTestBkColorDlg : public CDialog
{
    DECLARE_DYNAMIC(CTestBkColorDlg)

public:
    CTestBkColorDlg(CWnd* pParent = NULL);   // 标准构造函数
    virtual ~CTestBkColorDlg();

// 对话框数据
    enum { IDD = IDD_TESTBKCOLORDLG };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    virtual HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    virtual BOOL OnInitDialog();

    DECLARE_MESSAGE_MAP()

public:
    HBRUSH b;
    CBrush m_Brush;
};


// TestBkColorDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "TFileDialogTest.h"
#include "TestBkColorDlg.h"


// CTestBkColorDlg 对话框

IMPLEMENT_DYNAMIC(CTestBkColorDlg, CDialog)

CTestBkColorDlg::CTestBkColorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestBkColorDlg::IDD, pParent)
{

}

CTestBkColorDlg::~CTestBkColorDlg()
{
}

void CTestBkColorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CTestBkColorDlg, CDialog)
END_MESSAGE_MAP()


// CTestBkColorDlg 消息处理程序

BOOL CTestBkColorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Brush.CreateSolidBrush(RGB(0, 255, 255));
return TRUE;
}

HBRUSH CTestBkColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
return m_Brush;
}
C/C++ code




作者: wesleyluo   发布时间: 2011-06-14

来个大哥,帮忙看下咯。

作者: wesleyluo   发布时间: 2011-06-14

作者: lsq19871207   发布时间: 2011-06-14

OnCtlColor不会是你手动添加的吧?你应该响应WM_CTLCOLOR消息啊

你的是那个版本的VC啊,OnCtlColor怎么是虚函数呢?


BEGIN_MESSAGE_MAP(CTestBkColorDlg, CDialog)
END_MESSAGE_MAP()
为啥没有
ON_WM_CTLCOLOR()

作者: King_hhuang   发布时间: 2011-06-14

引用 3 楼 king_hhuang 的回复:

OnCtlColor不会是你手动添加的吧?你应该响应WM_CTLCOLOR消息啊

你的是那个版本的VC啊,OnCtlColor怎么是虚函数呢?


BEGIN_MESSAGE_MAP(CTestBkColorDlg, CDialog)
END_MESSAGE_MAP()
为啥没有
ON_WM_CTLCOLOR()

呵呵,那个就是我手动加的我以为那个是个虚函数呢;
原来不是这样啊,加了ON_WM_CTLCOLOR()就可以了;

但是怎么对话框上的按钮背景色没变呢?不是说所有控件颜色都改变吗?

作者: wesleyluo   发布时间: 2011-06-14