MFC单文档和非模式对话框问题,求大神

在单文档视图view.cpp里初始化了非模式对话框,对话框里有个listcontrol控件,现在想从另一个cpp文件里向list插入数据,应该怎么做是不是在cpp文件里找... 在单文档视图view.cpp里初始化了非模式对话框,对话框里有个list control控件,现在想从另一个cpp文件里向list插入数据,应该怎么做
是不是在cpp文件里找到对话框指针就能插入呢?那个指针怎么得到呢?
求大神,很急~~~~
展开
 我来答
veket的小号
推荐于2016-04-04 · TA获得超过3369个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3816万
展开全部

非模式的创建的时候不就是用 指针成员变量 + new (调用对话框构造)  + 指针调用对话框Create实现的

这个指针成员变量不就是你要的指针


 那么在另一个类 的cpp 你就要先考虑得到 view类对象 的指针...

送了一份参考资料吧

更多追问追答
追问
CDlg* pOneDlgObj = new CDlg; 
if ( pOneDlgObj)
{
BOOL ret = pOneDlgObj->Create(IDD_DIALOGBAR,this);
}
是不是就是 pOneDlgObj?在别的cpp里怎么得到它呢?加view.h 会出错
追答
给你写了个 例子
单文档的about对话框 点击关闭按钮 会在 view类建立的非模态的对话框给listctrl内添加item
mfc sdi默认的about对话框在app类的cpp文件中

核心代码(给CAboutDlg添加WM_CLOSE消息响应函数)
void CAboutDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
static int i = 0;
((CMfcsdiView *)(((CMainFrame *)AfxGetMainWnd())->GetActiveView()))->p->m_listctrl.InsertItem(i, "hello");
CDialog::OnClose();
}

主要是要 指针类型转换
先用AfxGetMainWnd得到 单文档主窗口的 指针 类型为 CWnd*
把它转换成单文档 主框架类指针类型 CMainFrame *
利用这个指针 调用从
CFrameWnd类继承来的GetActiveView得到活动视图类的指针
类型为CView*
再强制转换成CMfcsdiView * (我的工程名为Mfcsdi)
p是CMfcsdiView中的指针成员变量用来 new建立非模态对话框的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式