导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

(CMainFrame*)pMainFrame问题

bigbee 科腾科技(北京)有限公司上海分公司 副总裁  2001-12-16 11:28:54
小弟现在遇到一个问题。
在一个对话框类的cpp文件SetaliasDlg.cpp中我用到了这样一句,
POSITION pos = ((CMainFrame*)pMainFrame)->m_mapAlias.GetStartPosition();
问题就出在那个pMainFrame,我在MainFrm.cpp中这样CMainFrame* pMainFrame = NULL;
把它定义为全局变量,在POSITION pos = ((CMainFrame*)pMainFrame)->m_mapAlias.GetStartPosition();
这句的pMainFrame上按F12也可以找到他的定义处,但编译时却死活说是没定义过,无法通过,怎么办?
...全文
157 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
skybblue 2001-12-16
你在SetaliasDlg.cpp中用加入extern CMainFrame* pMainFrame = NULL;表示对全局变量的引用,应该可以了
回复
bigbee 2001-12-16
我已经加入了阿,可不行!顺便问一下,全局变量是可以用在一个project里的所有文件里的吗?
回复
OnDraw 2001-12-16
同意楼上的
回复
xiaoxiaohan 2001-12-16
在你的SetaliasDlg.cpp加入:
#include "MainFrm.h"
回复
bigbee 2001-12-16
万分感谢各位的帮助,最终在MHB(暮归的老牛) 的方案下成功了,但仍旧感谢各位的参与,给了我很多思路。现在加分。
回复
skybblue 2001-12-16
我想你最好用MHB(暮归的老牛),这种方式不用全局变量,使用也很方便。
回复
lzwcom 2001-12-16
可能是1。pMainFrame没有new
2.CMainFrame 在内存中的实例为pMainWnd,CMainFrame pFrame;
pFrame = (CMainFrame *)GetMainWnd().一般而言,某个内存地址不能write,只能为read之类的错误,主要是指针没有实例化,即没有分配内存。
以上仅供参考
回复
MHB 2001-12-16
//SetaliasDlg.cpp

#include "MainFrm.h"


CMainFrame * pMainFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;
POSITION pos = pMainFrame->m_mapAlias.GetStartPosition();

回复
我不是大明 2001-12-16
应该可以了吧
回复
skybblue 2001-12-16
只用extern CMainFrame* pMainFrame试试,不用赋值,如果还不行的话,你设置断点,调试跟踪一下!
回复
bigbee 2001-12-16
但是当调出这个对话框时出现了错误,就是某个内存地址不能write,只能为read之类的错误。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……