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

简介:       1.     颜色对话框         CHOOSECOLOR  结构体来设置获取颜色对话框的相关信息      成员变量m_cc     m_cc.rgbResult  在IDOK之后保存的是选择的颜色RGB值            COL...
 

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

 

 

 

 


  

目录
相关文章
|
小程序 前端开发 安全
uniapp中解析markdown支持网页和小程序
对于`markdown`相信大家都不陌生,日常写文档或日常记录都用到的比较多,书写的是`markdown`的格式,实时预览的是转换后的`html`样式。本次实现的需求是在`uniapp`中转换`markdown`文本展示在不同的平台,主要平台是浏览器使用和微信小程序使用。
693 1
|
存储 C语言 C++
37.【C/C++ 静态数据成员和静态成员函数 (超详解)】
37.【C/C++ 静态数据成员和静态成员函数 (超详解)】
421 0
|
4月前
|
Kubernetes Ubuntu 网络安全
Ubuntu系统关闭防火墙的正确方式
Ubuntu系统关闭防火墙的正确方式
784 2
|
7月前
|
人工智能 安全 虚拟化
Cua:Mac用户狂喜!这个开源框架让AI直接接管你的电脑,快速实现AI自动化办公
Cua是一个结合高性能虚拟化与AI代理能力的开源框架,能在Apple Silicon上以接近原生性能运行虚拟机,并让AI直接操作系统应用。
1011 17
Cua:Mac用户狂喜!这个开源框架让AI直接接管你的电脑,快速实现AI自动化办公
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
230 3
|
开发框架 JavaScript 前端开发
Electron技术深度解析:构建跨平台桌面应用的利器
【10月更文挑战第13天】Electron技术深度解析:构建跨平台桌面应用的利器
847 0
ly~
|
供应链 搜索推荐 大数据
大数据在零售业中的应用
在零售业中,大数据通过分析顾客的购买记录、在线浏览习惯等数据,帮助零售商理解顾客行为并提供个性化服务。例如,分析网站点击路径以了解顾客兴趣,并利用历史购买数据开发智能推荐系统,提升销售和顾客满意度。此外,大数据还能优化库存管理,通过分析销售数据和市场需求,更准确地预测需求,减少库存积压和缺货现象,提高资金流动性。
ly~
1067 2
|
前端开发 JavaScript 数据库
从零开始搭建创业公司全新技术栈解决方案
创业公司在初期面临的挑战之一就是如何构建一个既能满足当前需求,又能适应未来发展的技术栈。本文将全面探讨从后端到前端,再到云原生技术和AI大模型应用的各个层面,帮助创业者了解如何选择合适的开发语言、框架、工具,以及如何制定有效的开发流程,从而搭建一个强大而稳定的技术体系。
1023 1
从零开始搭建创业公司全新技术栈解决方案
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之使用ShardingSphere进行分表相比于原配置有什么优势
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
理解汇编中的CALL指令和参数传递
理解汇编中的CALL指令和参数传递
703 1