我们知道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里面要改为如下:

int  CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 

     if  (CFrameWndEx::OnCreate(lpCreateStruct) == - 1 ) 
         return  - 1 ;     
     // 基于持久值设置视觉管理器和样式 
    OnApplicationLook(theApp.m_nAppLook); 
     return   0 ; 
}

另一个函数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的初始化函数:

void  CShowForm2View::OnInitialUpdate() 

    ModifyStyleEx( WS_EX_CLIENTEDGE, WS_EX_STATICEDGE);  //去掉Form体凹陷 
    ModifyStyle(-  1  ,WS_CHILD| WS_VISIBLE);        //做为子窗体,可见 
    CFormView::OnInitialUpdate(); 
    GetParentFrame()->RecalcLayout(); 
    ResizeParentToFit(); 
    m_brush.CreateSolidBrush(RGB( 213 , 228 , 242 ));    //   生成office2007blue刷子,修改背景颜色所用 
    m_Btn1.SetToolTipText(_T( "这是按钮一")); 
    m_Btn1.SetSkin(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4,IDB_BITMAP5,NULL, 0 , 0 , 0 ); 
    m_Btn1.SizeToContent(); 
    m_Btn2.SetToolTipText(_T( "这是按钮二")); 
    m_Btn2.SetSkin(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4,IDB_BITMAP5,NULL, 0 , 0 , 0 ); 
    m_Btn2.SizeToContent(); 
}

运行效果如下:

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

VC Office2007界面对话框实现相关推荐

  1. VC Office2007界面对话框实现(续)

    在之前一篇< VC Office2007界面对话框实现>,写道可以用单文档来模拟对话框,来实现Office2007风格的对话框,这一次用不同的方法来实现,MFC的Ribbon功能包只对单文 ...

  2. C语言用句柄显示bmp图片,VC编程之VC MFC界面上显示BMP图片

    本文主要向大家介绍了VC编程之VC MFC界面上显示BMP图片,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助. 1.通过点击界面浏览按钮选择BMP图像文件. 点击浏览按钮打开文件对话框选择 ...

  3. vc++ 6.0对话框上无法显示中文(乱码)

    是英文版的vc++,建立mfc向导时无法选择中文,到对话框里面改成中文还是乱码,怎么版啊 问题补充: 一般对话框是可以的,就是那个CPropertyPage 不可以对话框资源选成中文以后要ReBuil ...

  4. VC中为对话框添加背景图片

    From: http://blog.ezcn8.com/2011/06/11/vc%E4%B8%AD%E4%B8%BA%E5%AF%B9%E8%AF%9D%E6%A1%86%E6%B7%BB%E5%8 ...

  5. VC MFC界面上显示BMP图片

    1.通过点击界面浏览按钮选择BMP图像文件. 点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录.关键代码如下: void ShowBMPDlg::OnButtonSelectiam ...

  6. vc 中对对话框的几种操作

    注:以下代码以一个名为CTest6Dlg的对话框类为例 ------------------------------------------------------------------------ ...

  7. VC 打开目录对话框

    From: http://blog.sina.com.cn/s/blog_790bb7190100yxm7.html 对于文件选择对话框和目录选择对话框.在VC中打开文件选择对话框比较简单,使用CFi ...

  8. vc可以实现对话框里显示html文档内容,也可以显示word内容吗,VC6中使用CHtmlView在对话框控制中显示HTML文档...

    VC6中使用CHtmlView在对话框控制中显示HTML文档 2008-02-23 05:29:58来源:互联网 阅读 () 在Visual Studio 6.0中出现了一个新类CHtmlView,利 ...

  9. VC++软件界面风格简单美化

    为了让软件能在视觉上给用户带来一种清新的感觉,从而避免潜在的用户视觉疲劳和审美疲劳,软件一般都要经过专业的界面设计和美化.但是,我们不是也没有专业的界面设计美化人员,所以只能对软件的界面和风格进行初步 ...

最新文章

  1. atoi,atol,strtod,atof
  2. C语言中冒泡排序及优化
  3. python爬虫,爬取糗事百科并保存到文件中
  4. 文档在线签名_为什么需要为文档和合同切换到在线签名
  5. C++学习之路 | PTA乙级—— 1076 Wifi密码 (15 分)(精简)
  6. opensplice dds v6.3.2_DDS生态社区带你解读|Filecoin创始人胡安:数据存储需求未来会增长3倍...
  7. Beyond Compare 出现“这个许可证密钥已被撤销”的解决办法(不会删除记录)
  8. Freescale i.mx28 Boot-stream分析
  9. NFC:Arduino、Android与PhoneGap近场通信
  10. mysql视图可以完成的操作_MySQL视图操作
  11. 开氏温度与摄氏度换算_政策丨车厢温度变化2……冷藏保温车国标开始征求意见...
  12. 基于贝叶斯公式的拼音输入法二元模型实现
  13. c语言字符串atoi函数,C++_C语言中一些将字符串转换为数字的函数小结,C语言atoi()函数:将字符串转换 - phpStudy...
  14. Java里用Frame框架写流星雨
  15. 集群服务器中定时任务多次执行的解决方案
  16. 列表表达式爬取红牛分公司数据
  17. python怎么实现打开摄像头_python开启摄像头以及深度学习实现目标检测方法
  18. 应用于客户端的性能测试指标
  19. XXE外部实体注入漏洞总结
  20. r语言 求几个数的最小公倍数_一课研究之“最小公倍数教学后学生知识技能情况分析”(20190417)...

热门文章

  1. linux时间戳反转,Unix时间戳到LDAP时间戳
  2. 【java】按照斗地主的规则,完成洗牌发牌的动作。
  3. 首款上线XBOX ONE的Cocos游戏!
  4. 闲置ipad打造真正的生产力工具
  5. Spring-Learn
  6. Python系列5-Python字典介绍
  7. UVA 12520 Square Garden
  8. 科普:ERP和CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  9. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】
  10. 如何将一个apk文件转换成exe文件?