1.如何停止皮肤文件???
下面这两个函数好像都有问题!
RemoveWindowSkin(m_hWnd);   //停止本窗口的皮肤
RemoveDialogSkin();         //停止对话框的皮肤,好像如果本窗口是对话框的话,对本窗口无用啊~~~~~~譬如说我在主对话框窗口用SetWindowSkin设置本窗口的皮肤
RemoveWindowSkin(m_hWnd);
SetWindowSkin(m_hWnd,_T("Dialog"));
但是加入我在这个对话框内有creat了一个对话框,而子对话框又是用SetWindowSkin设置的皮肤!上面的停止皮肤的代码就没有作用.
还有就是停止了皮肤以后如何立即刷新??2,如何为单个的同一类型的控件设置不通的皮肤??譬如说我有两个edit,都是CEdit类的,我在smf皮肤文件里面分别为这两个控件设置了不同的颜色定义,该如何用在一个窗口或者不同窗口内???3,好像跟tab控件有冲突,debug版本有断言错误!

解决方案 »

  1.   

    4.不断在几个皮肤之间却换会出现窗口变形!!!!
    RemoveWindowSkin(m_hWnd);
    VERIFY( 1 == LoadSkinFromResource(
                          AfxGetInstanceHandle(), _T("XPSTEEL") , _T("SKINMAGIC") ) );
    if (!m_bSkin)
    {
    SetWindowSkin(m_hWnd,_T("Dialog"));
    }
      

  2.   

    为单个控件加皮肤 可以使用controlID
    即在skinbuilder里将控件的controlID和在VC的Resource.h中控件的ID设为一样就可以了另外我用的是1.8版
    除了有内存泄漏外 没发现什么问题
      

  3.   

    楼主  能不能教我 怎么在smf文件中屏蔽掉单个控件??
      

  4.   

    1.RemoveDialogSkin和RemoveWindowSkin不会取消已经设置完成的对话框或窗口的皮肤,调用这两个函数之后,再产生出来的对话框或窗口将不再有皮肤,也就是这两个函数的功能是取消以后产生的对话框的皮肤,而不是当前已经设置完皮肤,显示出来的对话框或窗口的皮肤!2.这个功能似乎无法完成,SkinMagicLib提供的函数,只能设置全部对话框或窗体的皮肤,针对指定对话框或窗口的设置,无法实现,即使使用SetSingleDialogSkin设置,设置的也是全部对话框的皮肤!3.与Tab控件有冲突? 没有发现这个问题4.SkinMagiclib确实存在这个问题,本来你在无皮肤情况下,放置好各个控件的位置,但是用了SkinMagicLib之后,控件位置就会发生改变,你只有再重新调整!SkinMagicLib还有很多问题没有解决,他只是提供了简单的换肤功能,而且使用他之后应用程序速度明显变慢,如果想做出理想的界面程序,建议还是自己来实现,自己写一些控件类!
      

  5.   

    原来楼上的也碰到过 控件大小发生改变的问题
    起初我还以为是vc的问题呢不过用setwindowsize可以实现精确控制控件大小
      

  6.   

    这几天一直不能上csdn,今天上来了!
    【2】问题已经自己解决!就是: zhiheng所说的办法,不过我是自己摸索出来的,我在同一个对话框内设置了3个static控件,一个用smf文件默认的,另外两个用我自己在smf里面自己定义的,把ID设置成和那个的一样,就OK了!【3】不仅跟tab,刚才我发现跟slider也有冲突,都是在停止皮肤以后,就是在调用它的RemoveWindowSkin(m_hWnd)函数之后退出程序,就出现assert错误,具体位置在这两个控件的析构函数里面!
    调用父类的DestoryWindow函数里面的错误!
    #ifdef _DEBUG
    ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);
    #endif【4】不断在几个皮肤之间却换会出现窗口变形!!!!
    这个问题是这样的,如果你停止了皮肤,再次启用皮肤,就会出现变形!
    如果单纯在几个皮肤之间却换,不会出现变形!LRESULT CTestDlg::ShowSkin(CString strSkinName)//这样不会出现变形
    {
    VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle(),
    strSkinName , _T("SKINMAGIC") ) );
    if (!m_bSkin)
    {
    SetWindowSkin(m_hWnd,_T("Dialog"));
    }
    return 0;
    }=================================================================
    所以,归根结底,1,3,4问题都跟停止皮肤有关系!我的意思是想在程序里面实时的使用皮肤以及卸载皮肤,谁还有比较完美的办法吗?
      

  7.   

    : vcforever(霓裳羽衣) ( 2.这个功能似乎无法完成,SkinMagicLib提供的函数,只能设置全部对话框或窗体的皮肤,针对指定对话框或窗口的设置,无法实现,即使使用SetSingleDialogSkin设置,设置的也是全部对话框的皮肤!================================================
    拜托你亲自实践一下再来发言!!!!
    使用SetSingleDialogSkin设置,不是设置的全部!而是单个的,我就怀疑你自己亲自试验过没有就在这里大放厥词!!!
    还有我自己已经解决单个窗口的换肤,在这里鄙视一下你们这些没有实践的人!!!就象上午在MSN跟_J_问一个DLL问题,后来_J_把一个csdn叫什么笨猫的三星拉了进来,我靠,都是一些什么人啊,凭自己想像说话,我faint,自己没有动手试验就在那里瞎评论.我真怀疑这个人的严谨态度和水平!!!!
      

  8.   

    楼主楼主消消气!SkinMagic 确实不错 很漂亮~
    不过~  
    它还存在很多问题,莫名其妙的问题我来学习一样
      

  9.   

    吗的,楼上有个垃圾版主竟然迁怒我另外一个帖子,真TMD的卑鄙,以后这个狗东西别来大爷面前晃悠,你妈的,你有错了还不允许别人说??什么B玩意,大爷就瞧不起你Y的,你有那些星星算鸟??
    大爷不稀罕,我只尊敬自己动手实践在评论的,象你这种垃圾,滚你妈的一边去!!!
      

  10.   

    http://community.csdn.net/Expert/topic/3129/3129154.xml?temp=.8434412
      

  11.   

    tgb(我,我,我口吃~【开口是淫,沉默是精】) 
    ============
    你的ID有点吓人
      

  12.   

    其实skinmagic是一个换肤库,而不是界面库。所以他自身定位就有问题,提供那么多不必要的接口,对于实际应用程序换肤的需要来看,有只换主窗口却不换对话框的吗?(当然自娱性的程序例外)
      

  13.   

    不管如何骂人就是不对!vcforever, 2:18还在这!