我们知道VS2008SP1之后,MFC就多了一个功能包,可以快速的建立一个ribbon的界面,视觉样式可以在office 2007蓝、黑等颜色之间切换,这对于单文档/多文档做界面非常方便,而且也蛮好看的。但是,引入的功能包不对对话框进行界面美化,除了多一些控件外,外观没变。于是就想能不能利用单文档的CFormView来模拟对话框,进行自己来实现对话框的美化呢,下面以单文档为例:
1.单文档 ,“项目类型”选择Visual Studio  视觉样式和颜色 选择office2007 (蓝色主题);
2.用户界面功能,选中“使用菜单栏和工具栏”;
3.高级功能里面,所有的“高级框架窗格”都不要选择;
4.生成的类里面,选择视图基类为CFormView,运行程序就会出现如图所示:

是不是觉得很不和谐,外框那么好看,里面内置的Form体却那样子,但是我们可以对里面的Form进行换颜色的,具体参考:http://blog.csdn.net/akof1314/archive/2009/12/06/4952372.aspx ,而要让单文档模拟对话框,具体参考:http://blog.csdn.net/akof1314/archive/2010/05/14/5593802.aspx 这里有些不一样的是,CMainFrame里面要改为如下:

 ) 
         ;     
     ; 

另一个函数PreCreateWindow:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 

    if ( !CFrameWndEx::PreCreateWindow(cs) ) 
        return  FALSE; 
    // TODO: 在此处通过修改  
    //  CREATESTRUCT cs 来修改窗口类或样式  
    m_strTitle= "这是用单文档做出来的对话框" ;  
    cs.style&= ~FWS_ADDTOTITLE;   //去掉单文档的“无标题”  
    cs.style&= ~WS_THICKFRAME;   //去掉可调大小      
    cs.style &=  ~WS_MAXIMIZEBOX;    //去掉最大化按钮  
    cs.style &=  ~WS_MINIMIZEBOX;     //去掉最小化按钮  
    cs.hMenu= NULL ;   //去掉菜单栏  
    return  TRUE; 

对于按钮的美化就要使用上一篇说到的CxSkinButton按钮皮肤类(http://blog.csdn.net/akof1314/archive/2010/07/05/5713833.aspx ),按钮的素材我已放入源代码工程里面,CxSkinButton类自己加了SizeToContent功能,下面是Form的初始化函数:

  ,WS_CHILD| WS_VISIBLE);        , , ));    , , ); 
    m_Btn1.SizeToContent(); 
    m_Btn2.SetToolTipText(_T( , , ); 
    m_Btn2.SizeToContent(); 

运行效果如下:

修改背景颜色和设置文本之类的透明等,这里不再介绍,完整代码和例子:http://download.csdn.net/source/2517994

最新文章

  1. LUA5.3的BNF范式学习笔记
  2. Java多线程与并发库高级应用-传统线程机制回顾
  3. 【BZOJ-1912】patrol巡逻 树的直径 + DFS(树形DP)
  4. 探索 OpenStack 之(12):cinder-api Service 处理 HTTP Request 的过程分析
  5. 用bat使用date和time命令
  6. Android JNI 之 环境安装
  7. JavaScript对象属性 constructor
  8. python读取数据库出txt报表
  9. python kafka
  10. linux --- 部署前后端分离项目
  11. Android 实现顶层窗口、浮动窗口(附Demo)
  12. HTML5 自定义属性
  13. Yii2 基础学习
  14. Linux系统更改/关闭防火墙
  15. python学习——函数进阶
  16. python 调用RESTFul接口
  17. Tomcat从socket到java Servlet
  18. js之数组知识
  19. ios 拿到第一响应者的当前视图
  20. 设计模式(十四)Chain of Responsibility模式

热门文章

  1. 高级UNIX环境编程7 进程
  2. BZOJ 1614: [Usaco2007 Jan]Telephone Lines架设电话线
  3. pragma comment
  4. Java for循环用法
  5. iOS 如何自定义NavigationBar的高度
  6. ms sql 获取字符串首字母
  7. 我的Python成长之路---第四天---Python基础(16)---2016年1月23日(寒风刺骨)
  8. ZOJ 1450 Minimal Circle 最小圆覆盖
  9. (Problem 21)Amicable numbers
  10. 同步机制Lock初学(转)