MFC单文档和非模式对话框问题,求大神
在单文档视图view.cpp里初始化了非模式对话框,对话框里有个listcontrol控件,现在想从另一个cpp文件里向list插入数据,应该怎么做是不是在cpp文件里找...
在单文档视图view.cpp里初始化了非模式对话框,对话框里有个list control控件,现在想从另一个cpp文件里向list插入数据,应该怎么做
是不是在cpp文件里找到对话框指针就能插入呢?那个指针怎么得到呢?
求大神,很急~~~~ 展开
是不是在cpp文件里找到对话框指针就能插入呢?那个指针怎么得到呢?
求大神,很急~~~~ 展开
展开全部
非模式的创建的时候不就是用 指针成员变量 + 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建立非模态对话框的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询