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

 

 

 

 

  

时间: 2024-09-20 07:43:57

MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结的相关文章

C++基于对话框的程序,运行时候编辑框不显示颜色,字体也不变化,怎么回事?

问题描述 C++基于对话框的程序,运行时候编辑框不显示颜色,字体也不变化,怎么回事? 我添加三处代码如下:就是不显示颜色和字体 HBRUSH CADODataBase2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { try { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if

mfc对话框字体突然变得粗黑

问题描述 mfc对话框字体突然变得粗黑 在win7中用vc++6.0写的mfc程序,一运行的主对话框字体是正常的,点击按钮弹出对话框之后字体就变成又粗又黑了.写了很多个mfc程序都是这样,不知道怎么回事,怎么解决,求大神指点. 解决方案 碰到过同样问题,有人知道吗? 请问楼主解决了吗? 如果解决了请告诉我一声呀,谢谢!

MFC 基础知识:主对话框与子对话框(二)

(仅供使用VS MFC初学者学习,高手莫见笑)接"MFC 基础知识:主对话框与子对话框(一)"的内容在"MFC 基础知识:主对话框与子对话框(一)"中Edit Control(编辑框)控件中输出内容,主要是想讲讲在创建的子对话框中如何实现一些操作:即添加OnInitDialog初始化函数的操作,这里的操作VS2012与VC++6.0略有些改动. 一. 主对话框编辑框中输出内容 1.找到主对话框XXXDlg.cpp中的OnInitDialog()初始化函数,在函数注释

C#字体对话框(FontDialog)

在文字处理中,我们常用到字体,现在我们来做一个最常见的字体对话框. 一.字体对话框(FontDialog)常用属性 ShowColor 控制是否显示颜色选项 AllowScriptChange 是否显示字体的字符集 Font 在对话框显示的字体 AllowVerticalFonts 是否可选择垂直字体 Color 在对话框中选择的颜色 FontMustExist 当字体不存在时是否显示错误 MaxSize 可选择的最大字号 MinSize 可选择的最小字号 ScriptsOnly 显示排除OEM

Win32 DLL和MFC DLL 中封装对话框

现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32   DLL和MFC   DLL两个方面来分析并解决这个问题.           1.Win32   DLL               在Win32   DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件.然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义

如何在Word 2013字体对话框中设置字体和大小

Word2013的"字体"对话框专门用于设置Word文档中的字体.字体大小.字体效果等选项,用户在"字体"对话框中可以方便地选择字体,并设置字体大小,操作步骤如下所述: 第1步,打开Word2013文档窗口,选中准备设置字体和字体大小的文本块.然后在"开始"功能区单击"字体"分组的显示字体对话框按钮,如图2013073007所示. 图2013073007 单击"字体"显示按钮 第2步,在打开的"字

Word2013“字体”对话框中设置字体和大小

  Word2013的"字体"对话框专门用于设置Word文档中的字体.字体大小.字体效果等选项,用户在"字体"对话框中可以方便地选择字体,并设置字体大小,操作步骤如下所述: 第1步,打开Word2013文档窗口,选中准备设置字体和字体大小的文本块.然后在"开始"功能区单击"字体"分组的显示字体对话框按钮,如图2013073007所示. 图2013073007 单击"字体"显示按钮 第2步,在打开的"

c++-关于MFC含有多个对话框的单文档程序 文件操作

问题描述 关于MFC含有多个对话框的单文档程序 文件操作 最近在做MFC的课程设计,有关单文档的.涉及到txt文件的操作 有什么好的办法可以方便对文件的操作 我之前做C语言的课程设计的时候是将txt文件里的东西全都读到一个全局变量的结构体数组里,程序对数组操作完之后把原来的文件删掉再重新把数组里的内容写进去. 虽然根据这种办法可以用类对象数组来处理,但是由于MFC涉及到多个对话框,感觉这种办法不太好. 还麻烦各位大神指教 解决方案 在doc类里面去做文件操作,单文档多视图的意思是,一个doc类对

mfc界面美化-MFC中怎样给对话框中的按钮增加图片?

问题描述 MFC中怎样给对话框中的按钮增加图片? MFC中怎样给对话框中的按钮增加图片? 最好详细一点加点代码-- 解决方案 http://www.pudn.com/downloads190/sourcecode/windows/control/detail893261.html