最近在做一个小对话框程序,里面动态创建了很多编辑框,用来显示读入的文件的内容,用户可以进行修改,但是这些对话框统统灰色,而且单调,而且灰色,想美化一下,却又不知道怎么弄,请各位大师帮帮忙,谢谢了!哦!对了,是用MFC做的

解决方案 »

  1.   

    改变控件外观一般是通过利用自绘制功能Owner-Draw。
    重载DrawItem(LPDRAWITEMSTRUCT lpDIS)
    也有其他方法
    简单的方法 
    重载CEdit类 
    重载消息=WM_CTLCOLOR(CLASSVIEW   上右键   add   windows   message   handler) 
    注意不是WM_CTLCOLOR 
    在这个类中添加一个变量   CBrush   m_bBG; 
    构造函数中初始化他   
    在OnCtlColor中 
    pDC-> SetBKColor();       //设定背景颜色同   m_bBG一样 
    pDC-> SetTextColor();   //设定字体颜色 
    return   m_bBG; 然后给你用的控件添加这个类变量 
    ok 更详细介绍看之前的一篇帖子
    http://topic.csdn.net/t/20020823/09/963435.htmlhttp://topic.csdn.net/t/20020823/09/963435.html
      

  2.   

    继承CStatic,在Static上画边框。(可以控制边框和背景)
    然后Create Edit(注意,相对于父窗口),再MoveWindow,将编辑框放在Static的合适位置。(可以控制Edit字体颜色)如果是因为Static遮住了Edit,那是因为Static后画的,这样可以在画Static后给Edit发重画消息。(Static只在窗口显示后绘制一次)
      

  3.   

    3楼,4楼的方法都是专业方法。
    先保持你的窗体风格和操作系统一致,执行文件XXX.exe.manifest
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity  
    processorArchitecture="x86"  
    version="1.0.0.1" 
    type="win32" 
    name="XP style manifest"/> 
    <file name="GdiPlus.dll"/> 
    <dependency>  <dependentAssembly>  <assemblyIdentity  type="win32"  name="Microsoft.Windows.Common-Controls"  version="6.0.0.0"  processorArchitecture="x86"  publicKeyToken="6595b64144ccf1df"  language="*"  />  </dependentAssembly> </dependency> 
    </assembly> 
      

  4.   

    把上面XML文件保存好名字为XXX.exe.manifest,放在XXX.exe文件下
      

  5.   

    我也觉得控件外观不好看,但不知道怎么改变,据说第三方DirectUI界面库可以做出 超炫外观,像qq 迅雷什么的都是这样做出来的
      

  6.   


    QQ的EDIT控件应该还是从系统的标准EDIT控件继承下来的, 全部自绘来实现的话,需要花不少时间来完善EDIT的功能