⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05o006.htm

📁 VC知识库5_chm_decompile_20040520_210715
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="../../vckbase.css">
</head>

<body>

<div align="justify">
  <table border="0" width="100%" class="font" height="57">
    <tr>
      <td width="27%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">VC知识库(五)</font>
      </td>
      <td width="73%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">www.vckbase.com</font>
      </td>
    </tr>
    <tr>
      <td width="100%" height="4" class="header" valign="top" align="center" colspan="2">
      <hr>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="header" valign="top" align="center" colspan="2">
  装饰你的Title Bar 
      </td> 
    </tr> 
    <tr> 
      <td width="100%" height="17" class="info" align="center" colspan="2"> 
      </td>   
    </tr>   
    <tr>  
      <td width="100%" height="22" class="font" colspan="2"> 
        <hr> 
      </td>   
    </tr>  
    <tr>  
      <td width="100%" height="5" class="font" colspan="2">  
  <p><br> 
    Windows 98的发布给热衷于UI的用户带来了福音,它内嵌的Plus!,动态弹出的菜单与ToolTip,更有那颜色渐变的Title  
  Bar给我们增添了许多的乐趣。其实即便是在Windows 95下也能使你的程序的Title  
  Bar更具有个人魅力,在Norton Utilities for 95中就有了颜色渐变的Title Bar,在大量的Delphi  
  3.0的第三方控件中更有提供了此类完整功能的控件。当然用控件可以快速开发漂亮的程序,但对于爬键盘的人来说,了解程序内核的机理并且做出更Cool的Title  
  Bar才是最爽的事!本文列举了用代码装饰你的Title Bar的几种方法。<br> 
  <br> 
  <big> 1、修改Registry库<br>
  <br>
  </big>  在Windows 9x的桌面中,进入Display Properties对话框中的Appearance属性页,可以修改Title  
  Bar的字体的宽度与颜色。实际上所有这些更改都进入了Registry库的HKEY-CURRENT-USER/Control  
  Panel下。由于都是单纯的数字,对于字体是不好修改的,但若是单纯修改颜色值,则在Control  
  Panel的Colors下有明显的Value Name与Value Data的含义。例如在Windows 98中,Value  
  Name为ActiveTitle,Value Data为“0 0 128”;Value Name为GradientActiveTitle,Value  
  Data为“168 200 240”,即表示活动时的Title Bar颜色由深蓝色渐变到浅蓝色。值的含义很明显即为RGB的值。用Win32  
  SDK中的修改Registry库的API修改各项意义明显的Color值,别忘了最后发送WM-SYSCOLORCHANGE消息给自己的窗口,来验证改变后的效果。<br> 
  <br> 
    此种方法的好处是思路简单,并且下次重启Windows后,所有窗口均是改变后的颜色,但是方法有些勉强且功能不强。<br>
  <br>
  <big><br>
    2、利用SetSystem Color函数<br> 
  <br> 
  </big><br> 
    SetSystemColor的解释请参考相应手册,不再详述。这里仅列出一段代码片段,示意将Windows背景改为黑色,将Windows中的文字改为绿色。<br>
  <br>
    int aiDsp[2];<br> 
    DWORD aRgb[2];<br> 
    aiDsp[0]=COLOR-WINDOW;<br>
    aRgb[0]=RGB(0, 0, 0);<br> 
    aiDsp[1]=COLOR-WINDOWTEXT;<br>
    aRgb[1]=RGB(0, 255, 0);<br> 
    SetSysColors(2, aiDsp, aRgb);<br> 
  <br> 
    SetSysColors会自动给所有Windows发送WM-SYSCOLORCHANGE消息向所有Window声名系统颜色改变,但是并不改变注册库,因为下次重启Windows后,系统颜色又恢复原样。<br>
  <br>
    本方法实现简单,但影响了其他窗口特性,且功能太少。<br>
  <br>
  <big><br>
    3、拿起你的刷(brush),握住你的笔(pen),在DC上尽情地想画什么就画什么<br>
  <br>
  </big><br>
    在Windows 98下用VC 5.0生成小的Demo,在Windows 95下运行也正常。<br> 
  <br> 
    下面先了解一下Windows重画非客户区的过程。在处理WM-NCPAINT、WM-NCACTIVE、WM-SYSCOMMAND、WM-SETTEXT消息之后,Windows调用缺省处理消息函数DefWindowProc,在此函数中将对非客户区进行重画操作,故而在CWnd的虚函数DefWindowProc中,重画Title  
  Bar,就可以达到我们的目的,但是若不对消息进行一定的过滤,势必引起过多的重画,我们假定Title  
  Bar上没有System Menu,即没有最大、最小和关闭按钮在Title Bar上(见代码片段1)。这样可以简化操作。对消息的过滤与重画操作见代码片段2。<br> 
  <br> 
    代码片段1:<br>
  <br>
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)<br> 
    {<br>
  &nbsp;&nbsp;&nbsp;    cs.style &=~WS-SYSMENU; //取消Title Bar上的按钮<br> 
  &nbsp;&nbsp;&nbsp;    return CFrameWnd::PreCreateWindow(cs);<br> 
    }<br>
  <br>
    代码片段2:<br>
  <br>
    LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)<br> 
    {<br>
  &nbsp;&nbsp;&nbsp;    LRESULT lrst=CFrameWnd::DefWindowProc(message, wParam, lParam); <br> 
  &nbsp;&nbsp;&nbsp;    if (!::IsWindow(m-hWnd))<br> 
  &nbsp;&nbsp;&nbsp;    return lrst;<br> 
  &nbsp;&nbsp;&nbsp;    if (message=WM-NCPAINT ||message=WM-NCACTIVATE ||message=WM-NOTIFY)<br> 
  &nbsp;&nbsp;&nbsp;    {<br> 
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    CDC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -