MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结


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)设置背景模式


你可能感兴趣的:(color)