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

来源:互联网 发布:淘宝付费流量来源有 编辑:程序博客网 时间:2024/05/21 22:24
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)设置背景模式 
原创粉丝点击