我想设置Edit背景色?
时间:2011-12-22
来源:互联网
我通过继承CEdit类,改写了[code=C/C++][/code]HBRUSH CEditPlus::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkColor(color);
return CreateSolidBrush(color);
}
注:color 已经通过别一函数来设值。
有如下几个小问题或疑问:1.return CreateSolidBrush();这句会不会泄露内存资源
2.如果return NULL,那么整个函数操作就像没更改Edit框,不知道这个虚函数处于什么地位。换句话说,Edit框的背景在什么时候,通过发送ON_WM_CTLCOLOR_REFLECT消息来调用。
3:CEditPlus成员变量作为对话框的成员变量,当对话框构造时,其成员也构造,此时没有创建窗体。而在对话框的OnInitDialog()函数里,通过调用CEditPlus类型变量的成员函数,如SetWindowText等函数没有出错,说明些时窗体(m_hwnd)已经建立了,我想问的是CEditPlus窗体什么时候建立的。是在发送ON_WM_INITDIALOG之前?还是在发ON_WM_INIDIALOG消息之前还有其他什么消息?具体是什么消息使相应控件的变量获得窗体(create)
4.是不是当对话框建立起来时,其他什么控件的窗体也必须全部建立起来。
{
pDC->SetBkColor(color);
return CreateSolidBrush(color);
}
注:color 已经通过别一函数来设值。
有如下几个小问题或疑问:1.return CreateSolidBrush();这句会不会泄露内存资源
2.如果return NULL,那么整个函数操作就像没更改Edit框,不知道这个虚函数处于什么地位。换句话说,Edit框的背景在什么时候,通过发送ON_WM_CTLCOLOR_REFLECT消息来调用。
3:CEditPlus成员变量作为对话框的成员变量,当对话框构造时,其成员也构造,此时没有创建窗体。而在对话框的OnInitDialog()函数里,通过调用CEditPlus类型变量的成员函数,如SetWindowText等函数没有出错,说明些时窗体(m_hwnd)已经建立了,我想问的是CEditPlus窗体什么时候建立的。是在发送ON_WM_INITDIALOG之前?还是在发ON_WM_INIDIALOG消息之前还有其他什么消息?具体是什么消息使相应控件的变量获得窗体(create)
4.是不是当对话框建立起来时,其他什么控件的窗体也必须全部建立起来。
作者: alinzai 发布时间: 2011-12-22
补充:在ON_WM_INIDIALOG之前有ON_WM_CREATE消息,但通过调用对话框中控件的成员函数,会出现错误,说明此时还没有建立相应的窗体,那么在ON_WM_CREATE之后在ON_WM_INIDIALOG之前,是通过什么操作建立控件窗体的?是通过发送什么消息吗?如果真通过什么消息是谁发向谁来建立的(对话框发送给控件,还是控件获得什么消息,建好之后,再回传一个消息吗?)其次通过发送消息,是通过什么相应函数来创建的?(是create/createex )
作者: alinzai 发布时间: 2011-12-22
return CreateSolidBrush();
改用return一个CBrush成员变量,该变量先初始化
改用return一个CBrush成员变量,该变量先初始化
作者: VisualEleven 发布时间: 2011-12-22
WM_CTLCOLOR
The framework calls this member function when a child control is about to be drawn.
先创建父窗口,再创建子窗口,没有老子哪里来的儿子呢
The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures typically use this message to initialize controls and carry out any other initialization tasks that affect the appearance of the dialog box.
The framework calls this member function when a child control is about to be drawn.
先创建父窗口,再创建子窗口,没有老子哪里来的儿子呢
The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures typically use this message to initialize controls and carry out any other initialization tasks that affect the appearance of the dialog box.
作者: VisualEleven 发布时间: 2011-12-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28