【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2258|回复: 0

利用WM_CTLCOLOR消息设置程序界面 [原]

[复制链接]
发表于 2006-6-30 13:34:47 | 显示全部楼层 |阅读模式
很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成!
<>WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下:</P>
<>1.首先在自己需要设置界面的对话框上点击右键--&gt;建立类向导--&gt;加入WM_CTLCOLOR消息--&gt;自动生成OnCtlColor()函数,此函数可以对本对话框的控件的界面外观做修饰,用法如下:<BR>将类向导产生的函数做如下修改:<BR></P>
<DIV class=quote>HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR>    HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);<BR>    // TODO: Change any attributes of theDC here<BR>    //设置显示字体<BR>    CFont * cFont=new CFont;<BR>    cFont-&gt;CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0, <BR>                                          ANSI_CHARSET,OUT_DEFAULT_PRECIS,<BR>                                          CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,<BR>                                          DEFAULT_PITCH&amp;FF_SWISS,"Arial");<BR>    //对特定的控件做修改<BR>    switch()<BR>    {<BR>       case CTLCOLOR_STATIC: //对所有静态文本控件的设置<BR>      {<BR>          pDC-&gt;SetBkMode(TRANSPARENT); <BR>          //设置背景为透明<BR>          pDC-&gt;SetTextColor(RGB(255,255,0)); //设置字体颜色<BR>          pWnd-&gt;SetFont(cFont); //设置字体<BR>          HBRUSH B = CreateSolidBrush(RGB(125,125,255)); <BR>          //创建画刷<BR>          return (HBRUSH) B; //返回画刷句柄<BR>      }<BR>      case CTLCOLOR_EDIT: //对所有编辑框的设置<BR>     {<BR>          pDC-&gt;SetBkMode(TRANSPARENT); <BR>          pDC-&gt;SetTextColor(RGB(255,255,0)); <BR>          pWnd-&gt;SetFont(cFont); <BR>          HBRUSH B = CreateSolidBrush(RGB(125,125,255)); <BR>          return (HBRUSH) B; <BR>      }<BR>      default:<BR>      return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);<BR>    }<BR>}<BR></DIV>
<p><BR>注:case的类别有以下几种:<BR>CTLCOLOR_BTN 按钮控件<BR>CTLCOLOR_DLG 对话框<BR>CTLCOLOR_EDIT 编辑框<BR>CTLCOLOR_LISTBOX 列表框<BR>CTLCOLOR_MSGBOX 消息框<BR>CTLCOLOR_SCROLLBAR 滚动条<BR>CTLCOLOR_STATIC 静态文本 <BR><BR>2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的控件进行设置,方法如下:
<p>
<DIV class=quote>switch (pWnd-&gt;GetDlgCtrlID()) <BR>            { <BR>            //针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置<BR>            case IDC_CTL1:<BR>            case IDC_CTL2:<BR>            case IDC_CTL3: <BR>            {<BR>            pDC-&gt;SetBkMode(TRANSPARENT);<BR>            pDC-&gt;SetTextColor(RGB(255,255, 0));<BR>            pWnd-&gt;SetFont(cFont);<BR>            HBRUSH B = CreateSolidBrush(RGB(125,125,255));<BR>            return (HBRUSH) B;<BR>            }<BR>            default:<BR>            return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR>            }   </DIV>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 01:48

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表