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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值