MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结
2011-08-01 00:18
363 查看
1.
颜色对话框
CHOOSECOLOR 结构体来设置获取颜色对话框的相关信息
成员变量m_cc
m_cc.rgbResult 在IDOK之后保存的是选择的颜色RGB值
COLORREF choose_color;
CColorDialog dlg; //创建颜色对话框
dlg.m_cc.Flags|=CC_RGBINIT ;//以用户选择的颜色进行初始化颜色打开对话框
dlg.m_cc.Flags|=CC_FULLOPEN; //全部打开 包括用户自定义
dlg.m_cc.rgbResult=choose_color; //使用我们上次选择的颜色进行初始化
if(IDOK==dlg.DoModal()) //创建模态对话框
{
choose_color=dlg.m_cc.rgbResult; //保存颜色选择 颜色选择会反映到 CHOOSECOLOR结构体中的 regResult变量中
}
2. 字体对话框 CFontDialog
CHOOSEFONT 结构体保存字体设置
LOGFONT 结构体 间接创建字体
DeleteObject 删除与windows GDI 相关的所有存储 这是资源
CGDIObject是GDI类 判断类是否与某种资源相关联我们可以判断句柄
CFont m_font; //定义CFont对象
CString FontName; //字体名字
CFontDialog dlg; //定义 CFontDialog对象
if(IDOK==dlg.DoModal()) //创建模态对话框
{
if(m_font.m_hObject) //判断句柄是否存在
m_font.DeleteObject(); //相关资源
m_font.CreateFontIndirect(dlg.m_cf.lpLogFont); //通过CHOOSEFON结构体的LOGFON 成员创建字体
FontName=dlg.m_cf.lpLogFont->lfFaceName; //字体名字
Invalidate(); //引起窗体无效 重画 进入OnDraw函数
4. GetWindowRect 是获取到屏幕矩形区域的 我们获取控件矩形要用GetClientRect 来获得
SCreenToClient() 屏幕坐标转换到客户坐标
ClientToSCreen() 客户坐标转换成屏幕坐标
5.WM_CTLCOLOR 消息响应 我们可以通过这个消息函数来设置控件的背景颜色 函数必须返回一个画刷 这个函数被调用多次 每次对应一个控件
afx_msg HBRUSH OnCtlColor(
CDC* pDC, //控件设备描述
CWnd* pWnd, //指向控件的指针
UINT nCtlColor ); //控件的类型
CWnd::GetDlgCtrlID() //CWnd类的成员函数 通过对象来获取 一个控件的ID 包括对话框 ID 子窗口 顶层窗口返回值无效
CDC::SetBkMode(TRANSPARENT)设置背景模式
颜色对话框
CHOOSECOLOR 结构体来设置获取颜色对话框的相关信息
成员变量m_cc
m_cc.rgbResult 在IDOK之后保存的是选择的颜色RGB值
COLORREF choose_color;
CColorDialog dlg; //创建颜色对话框
dlg.m_cc.Flags|=CC_RGBINIT ;//以用户选择的颜色进行初始化颜色打开对话框
dlg.m_cc.Flags|=CC_FULLOPEN; //全部打开 包括用户自定义
dlg.m_cc.rgbResult=choose_color; //使用我们上次选择的颜色进行初始化
if(IDOK==dlg.DoModal()) //创建模态对话框
{
choose_color=dlg.m_cc.rgbResult; //保存颜色选择 颜色选择会反映到 CHOOSECOLOR结构体中的 regResult变量中
}
2. 字体对话框 CFontDialog
CHOOSEFONT 结构体保存字体设置
LOGFONT 结构体 间接创建字体
DeleteObject 删除与windows GDI 相关的所有存储 这是资源
CGDIObject是GDI类 判断类是否与某种资源相关联我们可以判断句柄
CFont m_font; //定义CFont对象
CString FontName; //字体名字
CFontDialog dlg; //定义 CFontDialog对象
if(IDOK==dlg.DoModal()) //创建模态对话框
{
if(m_font.m_hObject) //判断句柄是否存在
m_font.DeleteObject(); //相关资源
m_font.CreateFontIndirect(dlg.m_cf.lpLogFont); //通过CHOOSEFON结构体的LOGFON 成员创建字体
FontName=dlg.m_cf.lpLogFont->lfFaceName; //字体名字
Invalidate(); //引起窗体无效 重画 进入OnDraw函数
4. GetWindowRect 是获取到屏幕矩形区域的 我们获取控件矩形要用GetClientRect 来获得
SCreenToClient() 屏幕坐标转换到客户坐标
ClientToSCreen() 客户坐标转换成屏幕坐标
5.WM_CTLCOLOR 消息响应 我们可以通过这个消息函数来设置控件的背景颜色 函数必须返回一个画刷 这个函数被调用多次 每次对应一个控件
afx_msg HBRUSH OnCtlColor(
CDC* pDC, //控件设备描述
CWnd* pWnd, //指向控件的指针
UINT nCtlColor ); //控件的类型
CWnd::GetDlgCtrlID() //CWnd类的成员函数 通过对象来获取 一个控件的ID 包括对话框 ID 子窗口 顶层窗口返回值无效
CDC::SetBkMode(TRANSPARENT)设置背景模式
相关文章推荐
- MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结
- MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结
- MFC-WM_CTLCOLOR消息绘制控件颜色
- MFC 消息之WM_CTLCOLOR和OnCtlColor消息的使用方法总结
- MFC简单皮肤颜色绘制(SetDialogBkColor不再被支持,看 WM_CTLCOLOR消息如何百变控件颜色)
- MFC简单皮肤颜色绘制(SetDialogBkColor不再被支持,看 WM_CTLCOLOR消息如何百变控件颜色)
- MFC简单皮肤颜色绘制(SetDialogBkColor不再被支持,看 WM_CTLCOLOR消息如何百变控件颜色)
- 响应WM_CTLCOLOR消息,设置对话框及个空间的颜色样式
- 响应WM_CTLCOLOR消息,设置对话框及个空间的颜色样式
- WM_CTLCOLOR设置控件设置背景和字体颜色
- 通过 WM_CTLCOLOR 设置VC 组合框显示属性(字体、颜色、背景)
- MFC->消息对话框、文件对话框、字体对话框、颜色对话框
- MFC/Windows_WM_CTLCOLOR消息
- MFC设置对话框、字体对话框、颜色对话框
- 基于对话框的MFC程序中捕捉WM_KEYDOWN消息的方法----PreTranslateMessage(MSG* pMsg) 转帖
- MFC所有WM消息和数据类型总结
- WM_CTLCOLOR消息
- WM_CTLCOLOR和OnCtlColor消息的用法
- MFC中关于基于对话框的应用程序的WM_COMMAND消息的流动路径
- 颜色,文件和字体对话框(VC_MFC)