zoukankan      html  css  js  c++  java
  • [MFC美化] SkinMagic使用详解3- 常见使用问题解答

    在SkinMagic使用过程中,经常遇到以下几个问题:

    1. 静态加载皮肤文件时,资源文件IDR_SKIN_CORONA可能会报错:未声明的标识符

     解决方法:添加头文件”Resource.h“

    2. 界面需要添加换肤菜单功能,只需要:

     解决方法:在界面中加入换皮肤菜单,及相应的函数,在函数中加载皮肤。注意只需要更换皮肤资源即可,无需重设SetDialogSkin函数,否则报错。

    void CMainFrame::OnDevior()
    {
      LoadSkinFromResource( AfxGetInstanceHandle() , "DEVIOR" ,"SKINMAGIC") ; //注意不能重新设SetDialogSkin函数,否则报错
    }

    3.  对话框美化时,Skinmagic无法显示菜单 

      用到Skinmagic皮肤库的时候,在App类的InitInstance函数中加载皮肤库成功后,却发现自己的菜单无法正常显示了!

    解决办法:加载皮肤文件类型在InitInstance函数中实现,加载皮肤名字的时候在Dlg类中加载。

    在App类的InitInstance()函数中只需要输入:

    VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), NULL , NULL,  NULL ) );  
    VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , _T("IDR_SKINMAGIC"), _T("SKINMAGIC") ) );   

    在Dlg类中的OnInitDialog()类中输入:

    SetWindowSkin( m_hWnd, "Dialog" );  //这是重点,m_hWnd 是你的主对话框的窗口句柄
    SetDialogSkin( "Dialog" );  //是为了给你以后的对话框添加皮肤的!

    4. 对话框美化时,列表滚动条消失

    解决方法:

    如果是为单个对话框窗口添加皮肤,例如在对话框视图中:可重载对话框视图的创建函数OnCreate,加入如下代码: 

    VERIFY( 1 == SetSingleDialogSkin( m_hWnd, "Dialog" ) ); 
    EnableWindowScrollbarSkin( m_hWnd , SB_BOTH ); 

    其中:int EnableWindowScrollbarSkin( //为滚动条添加皮肤 
    HWND hWnd, //要使用皮肤的窗口句柄 
    int* fnBar //要使用皮肤的滚动条,SB_BOTH表明是横竖都是用皮肤 
    ); 

    但需要特别注意的是:

    如果同时存在菜单和下拉框(列表滚动条),我目前没有找到方法使两者共存,因此我最终用的是其他的皮肤库。有知道的可以回复我,谢谢!

    5. 为了工程发布时,无需依赖dll文件

      使用dll时,程序发布时需要skinmaigc.dll与程序打包,若使用静态库,则无需依赖dll文件.

    具体设置:

    1). 常规:  右击项目->属性->配置属性->常规,然后在右边的“项目默认值”中的“MFC的使用”选项中选择“在静态库中使用MFC”,

    2). 多线程调试:  右击项目-->属性->配置属性->c/c++->代码生成->运行时库->MTd或MT

    如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。

    如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;

  • 相关阅读:
    平凡人生的忠告
    Visio建模
    2007的第一天....
    PowerDesigner12对SQL2005反向工程问题.
    强人画的画:)
    2006的最后一天
    ASP.NET生成树形显示的GridView
    输出由1~9组成和三组三位数,第二组是第一组的2倍,第三组是第一组的3倍,三组数字中无重复数字
    C#读取图片Exif信息
    C#读取数据库图片显示、缩小、更新
  • 原文地址:https://www.cnblogs.com/zwh0214/p/6096940.html
Copyright © 2011-2022 走看看