VC控件背景颜色初始化及对句柄和对象的理解
需要设计的界面如下
静态对话框背景颜色不采用系统颜色,这时候需要重载CDialog类中的HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) ,其中pDC是当前控件窗口的设备上下文而不是主窗口的设备上下文,改变控件窗口背景时需要改变的是主窗口的画刷(例如CDialog对话宽中有一个ID为IDC_STATIC静态文本框,这时候的pDC指向的是静态文本框的设备上下文而不是Dialog这个父窗口 )因此该函数需要返回一个HBRUSH进而改变父窗口画刷而传入参数中无法直接获取一个HBRUSH句柄,返回一个特定画刷句柄有以下方法:
1.利用API函数直接创建画刷句柄
例如HBRUSH hbr=CreatSolidBrush(RGB(0,0,0));
其他函数参考以下文章HBRUSH用法介绍
2.利用CBrush生成一个HBRUSH
MFC编程中最大的特点就是系统将复杂的API函数封装到了一个又一个的类当中,类替代以往的API函数成为操作Windows句柄的工具。而句柄在窗口操作过程中起到了标识一个特定对象的作用,所以对一个MFC的类进行操作本质上还是对一个句柄进行操作,具体代码如下:
HBRUSH CUDPDlg::StyleInit(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(pWnd->GetDlgCtrlID()=&#