首页
社区
课程
招聘
[旧帖] 郁金香vc外挂编程的问题(包含有mfc的dll退出时候挂掉)! 0.00雪花
发表于: 2010-10-25 22:57 7903

[旧帖] 郁金香vc外挂编程的问题(包含有mfc的dll退出时候挂掉)! 0.00雪花

2010-10-25 22:57
7903
最近在学习郁金香老师的vc游戏外挂编程, 学到2.3.3(在动态链接库中创建窗口)这里卡壳了, 我关闭外挂程序的时候程序, 包括游戏客户端, 直接弹出错误窗口, 然后挂掉.报的错误是wincore.cpp中的969行assert宏出问题, 代码如下:
BOOL CWnd::DestroyWindow()
{
        if (m_hWnd == NULL)
                return FALSE;

        CHandleMap* pMap = afxMapHWND();
        ASSERT(pMap != NULL);      //969行
        ......
网络上对于这个错误的解释是: "起因是在消息映射还没有激活的时候就关闭或是析构窗口"

按照郁金香老师的视频教程, 我重载了cwinapp的ExitInstance, 然后将资源在这里也销毁了, 并且设置为了null, 代码如下:
int CCheaterApp::ExitInstance()
{
        //AFX_MANAGE_STATE(AfxGetStaticModuleState());
       
        // TODO: Add your specialized code here and/or call the base class
        if (NULL != pAssistDlg)
        {
                delete pAssistDlg;
                pAssistDlg = NULL;
        }
       
        return CWinApp::ExitInstance();
}
但是我发现这么做, 第一次启动外挂, 然后关闭可以, 但是第二次的时候还是会连游戏客户端一起挂掉.

我百思不得其解了, 万般无奈之下, 求助于看雪的各位热心网友, 还望大家多多帮助, 小弟感激涕零.
如果各位感觉我上面讲的不是很清楚, 我可以上传我的源码.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 245
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
CWnd::DestroyWindow()
ASSERT(pMap!=NULL)
这个断言发生错误 起因时在消息映射还没有激活的时候就关闭或是析构窗口,要窒息检查InitInstance()函数,把你的InitInstance()函数贴出来看看
2010-10-26 11:36
0
雪    币: 534
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我没有写InitInstance()函数

今天调试了一下午, 定位错误, 就在int CCheaterApp::ExitInstance() 这个函数里面, 到底应该如何搞啊, 还请大牛帮忙啊.
2010-10-27 21:40
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你在创建那个DLL文件的class xxxApp : public CWinApp
类里面
加上int ExitInstance();
然后再.cpp里调用它
int xxxxApp::ExitInstance()
{
        delete gameform; //这个为创建窗口的申请的全局指针变量
        gameform=NULL;  
        return CWinApp::ExitInstance();
}
你就这样应该就OK了~
2010-12-20 23:31
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻学习   
2010-12-22 08:58
0
游客
登录 | 注册 方可回帖
返回
//