WM_CTLCOLOR和OnCtlColor消息函数
2014-04-14 20:14
267 查看
WM_CTLCOLOR消息(属于对话框的)用来完成对EDIT, STATIC, BUTTON等7类控件设置背景和字体颜色。 其用法如下:
1.首先在自己需要设置界面的对话框上点击右键-->建立类向导-->加入WM_CTLCOLOR消息-->自动生成OnCtlColor()函数, 此函数可以对本对话框的控件的界面外观做修饰, 用法如下:
将类向导产生的函数做如下修改:
注:case的类别有以下几种:
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滚动条
CTLCOLOR_STATIC 静态文本
2.你可能觉得对所有的控件使用统一的界面设置觉得不自由, 其实VC同样可以对特定的ID的控件进行设置, 方法如下:
1.首先在自己需要设置界面的对话框上点击右键-->建立类向导-->加入WM_CTLCOLOR消息-->自动生成OnCtlColor()函数, 此函数可以对本对话框的控件的界面外观做修饰, 用法如下:
将类向导产生的函数做如下修改:
HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor); // TODO: Change any attributes of the DC here // 对特定的控件做修改 //********参数说明****************************************** //pDC: 控件的DC。 //pWnd: 控件的句柄。 //nCtlColor: 控件类型。 switch(nCtlColor) { case CTLCOLOR_STATIC: //对所有静态文本控件的设置 { pDC->SetBkMode(TRANSPARENT); //设置背景为透明 hbr = (HBRUSH)::GetStockObject(NULL_BRUSH);//创建一个画不了任何东西的NULL_BRUSH。 return hbr ; //返回画刷句柄 } case CTLCOLOR_EDIT: //对所有编辑框的设置 { pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,255,0)); pWnd->SetFont(cFont); HBRUSH B = CreateSolidBrush(RGB(125,125,255)); return (HBRUSH) B; } default: return CDialog::OnCtlColor(pDC,pWnd, nCtlColor); } }
注:case的类别有以下几种:
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滚动条
CTLCOLOR_STATIC 静态文本
2.你可能觉得对所有的控件使用统一的界面设置觉得不自由, 其实VC同样可以对特定的ID的控件进行设置, 方法如下:
switch (pWnd->GetDlgCtrlID()) { //针对ID为IDC_CTL1, IDC_CTL2和IDC_CTL3的控件进行同样的设置 case IDC_CTL1: case IDC_CTL2: case IDC_CTL3: { pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,255, 0)); pWnd->SetFont(cFont); HBRUSH B = CreateSolidBrush(RGB(125,125,255)); return (HBRUSH) B; } default: return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); }
相关文章推荐
- 寻找一个整数二进制表示中1的个数
- 杭电acm 1038题
- Linux下MySQL备份以及crontab定时备份
- Linux下MySQL备份以及crontab定时备份
- 初次使用boost 库
- Linux下MySQL备份以及crontab定时备份
- C# 心得
- nyoj17
- 在VS2010下如何使用头文件unistd.h
- ListBox 绑定之-SelectedItem
- Twitter.com在用哪些Javascript框架?
- C++中抽象类和接口类的区别
- Java中文件路径及其访问
- Android四大基本组件介绍与生命周期
- 【java】代理、包装
- 反转单词顺序
- Android Stagefright MPEG4Writer分析
- mysql的一些命令
- [转] 每个程序员都必须遵守的编程原则
- C#反射 入门学习 01