我用VS2008SP1在Win7下开发了个单文档程序,单文档中可以DoModal对话框,在Win7下,DoModal的出来的对话框上的控件比如按钮等,样子很好看,但程序在2003运行时,对话框以及按钮等控件都很难看,请问有什么办法可以让程序改变风格,任何系统都用Win7下控件的样子??

解决方案 »

  1.   

    可以界面库来统一更换风格,也可以用自定义重绘的控件替换,但在win7下的按钮不会和在2003下一样,因为win7对windows的标准控件界面进行了升级。
      

  2.   

    那现在不是很悲惨了?
    全部得重新绘制?我以为可以设置CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));来强行更改系统风格,但发现对话框中的控件还是被弄成了2003的那种风格。。
      

  3.   


    这个只是对ribbon的界面由影响, 也就是ribbon元素。 必须自绘
      

  4.   

    感谢楼上几位的回答,那就意味着Dialog风格也没有办法更改了?
    Win7下Dialog的风格蛮不错的,2003下Dialog样子很普通,但主界面用了Ribbon,是Office2007风格,弹出的Dialog却是2003风格,一点都不协调。。
      

  5.   

    不知道是否可以在2000,XP,2003系统下,我强制加载Win7下的comctl32.dll,来实现这种目的呢??
    如果可以,我该如何避免MFC程序加载当前系统的这个DLL,而是加载这个提供的Win7下的comctl32.dll。
      

  6.   

    没有人回答啊。。那请问有谁知道如何获取界面的背景色呢?我现在用
    CRect clientRect;
    GetClientRect(&clientRect);
    CMFCVisualManager::GetInstance()->OnFillPopupWindowBackground(pDC, clientRect);
    把弹出的对话框的背景色改成了和主框架的渐进色一致了,看上去比较协调,但对话框中的Static这些控件的背景色还是默认的颜色,我想把这些控件的背景色也都改成和对话框的背景色一致,不知道怎么获取对话框的背景色?这个背景色貌似是渐进的。。
      

  7.   

    http://blog.csdn.net/akof1314/archive/2009/12/06/4952372.aspx   这个改变控件颜色