VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 782|回复: 6

SkinMagic 换肤的问题,很怪!大家来看看!!!!!!!!!!!!!!

[复制链接]

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-24 11:00:01 | 显示全部楼层 |阅读模式
我想美化我做的一个MFC程序的界面,用了SkinMagic
首先我创建了只有一个简单的Dialog的Test程序,按照网上文章的指导,换肤成功。

但是用在我自己这个程序时,运行到C***App::InitInstance()中的InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL);这句时,即初始化SkinMagic库的时候,
程序就会发生错误关闭。
调试会出现对话框上写着
Unhandled exception in ***.exe(SKINMAGICTRIAL.DLL):0XC000001D:Illegal
Instruction

请教高人这是怎么回事啊?
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-21 14:15:02 | 显示全部楼层
把你的initinstance的代码贴出来
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-24 09:45:01 | 显示全部楼层
BOOL CAgiLeanChatApp::InitInstance()
{
        //===加载皮肤=====
        HINSTANCE hInstance=AfxGetInstanceHandle();
        VERIFY( 1 == InitSkinMagicLib(hInstance, NULL, NULL, NULL));
        VERIFY( 1 == LoadSkinFile(SOFT_SKIN));
        //<====end==============================
       
        AfxEnableControlContainer();

        // Standard initialization
        // If you are not using these features and wish to reduce the size
        //  of your final executable, you should remove from the following
        //  the specific initialization routines you do not need.

#ifdef _AFXDLL
        Enable3dControls();                        // Call this when using MFC in a shared DLL
#else
        Enable3dControlsStatic();        // Call this when linking to MFC statically
#endif

        // Change the registry key under which our settings are stored.
        // TODO: You should modify this string to be something appropriate
        // such as the name of your company or organization.
        SetRegistryKey(_T("Local AppWizard-Generated Applications"));

        CMainFrame* pFrame = new CMainFrame;
        m_pMainWnd = pFrame;

        // create and load the frame with its resources

        pFrame->LoadFrame(IDR_MAINFRAME,
                WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
                NULL);

        //===========启动皮肤======================================
        VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
        VERIFY( 1 == SetDialogSkin( "Dialog" ));
        //<=============end=========================================

        //窗口最前面显示
        SetWindowPos(m_pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
       
        // The one and only window has been initialized, so show and update it.
        m_pMainWnd->ShowWindow(SW_SHOW);
        m_pMainWnd->UpdateWindow();

        return TRUE;
}
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-29 09:45:01 | 显示全部楼层

3. 在App的InitInstance()里加入以下代码:(注意要加在m_pMainWnd被初始化以后,基于对话框的要加在m_pMainWnd = &dlg;之后)

        //===================加载皮肤并且设置皮肤窗口================*/
        VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(),"SDI",
                NULL,
                NULL));

        VERIFY(1 == LoadSkinFromResource(AfxGetInstanceHandle(),"TUSK","SKINMAGIC"));

        VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd,"MainFrame"));
        VERIFY(1 == SetDialogSkin("Dialog"));
        /*==========================END==============================*/
上面是skinmaigc的使用说明,对你的程序来说,需要把
CMainFrame* pFrame = new CMainFrame;
        m_pMainWnd = pFrame
这个放在VERIFY( 1 == InitSkinMagicLib(hInstance, NULL, NULL, NULL));
        VERIFY( 1 == LoadSkinFile(SOFT_SKIN));
之前。
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-2 21:15:01 | 显示全部楼层
晕,没仔细看,你的位置时正确的,你试试把InitSkinMagicLib放到m_pMainWnd = pFrame之后看看吧,如果不行,估计就是skinmagic的问题了。。。。我的是正常的
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-7-17 12:30:02 | 显示全部楼层
楼上的兄弟!不行呀?我调用了其它的dll,就会出现这样的问题,如果不调用dll就没事,真不知道什么原因,不会是有冲突吧!晕死了!!!
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-7-23 12:45:01 | 显示全部楼层
那铁定是有冲突了,换个版本看看吧,用这种第三方的库就是这样郁闷。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表