Cview中的变量获得对话框编辑框的内容

seldon_shi 2010-07-27 07:58:03
创建了一个视图类程序,在其中又创建了一个对话框,属于不同的类 然后我想让视图类中的某个变量随着对话框中编辑框的内容改变而改变,如何通过响应编辑框内容改变函数实现?
...全文
139 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
seldon_shi 2010-07-28
  • 打赏
  • 举报
回复
void CDisplayView::OnChangeNnum()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

UpdateData(TRUE);
CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; //得到指向指定视图(对话框)的指针
CMyView *pMyView=(CMyView *)pFrame->m_splitter.GetPane(0,1); // 指针指向第一行第0列的对话框
pMyView->UpdatenNum(m_nNum);
// CMyView *pView; //为什么这样就出错
// pView->UpdatenNum(m_nNum);
}

问题解决,但是还有个问题 为什么用第一种方式正确,用第二种方法就不行呢?运行时提示内存不能为written?
na_he 2010-07-28
  • 打赏
  • 举报
回复
目前编译器还不支持unicode.文件名字最好用英文。
na_he 2010-07-28
  • 打赏
  • 举报
回复
CView* pView = (CView*)m_ImageSplitter.GetPane(0, 0);

只能通过主框架来访问。比如上面的用法。
seldon_shi 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]

引用楼主 beishuiqing 的回复:
创建了一个视图类程序,在其中又创建了一个对话框,属于不同的类 然后我想让视图类中的某个变量随着对话框中编辑框的内容改变而改变,如何通过响应编辑框内容改变函数实现?

按照你上面说的,你的对话框应该是视图窗口的子窗口,那么你在对话框中应该很容易访问视图类
[/Quote]

该怎么访问视图类
如果增加 #include “监控View。h”的话,出现错误:
e:\vc++\我的毕设\监控view.h(30) : error C2143: syntax error : missing ';' before '*',


双击错误指向了 CMyDoc* GetDocument();怎么办?
seldon_shi 2010-07-28
  • 打赏
  • 举报
回复
问题补充:
我的对话框实在主视图中分割窗口在放进去的。对话框是基于CFormView类的,主视图是基于CscrollView类的,而且工程名称是中文“监控”,所以主视图的view类是CMyView,怎么解决 谢谢
seldon_shi 2010-07-28
  • 打赏
  • 举报
回复
如何在对话框类中获得指向主视图类的指针呢?
用包含头文件的方式他提示出错了
youhao1999 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wltg2001 的回复:]
引用楼主 beishuiqing 的回复:
创建了一个视图类程序,在其中又创建了一个对话框,属于不同的类 然后我想让视图类中的某个变量随着对话框中编辑框的内容改变而改变,如何通过响应编辑框内容改变函数实现?

最方便的方法是,当编辑框内容改变时,向视图类发送自定义消息,通知视图类对话框已经改变,视图类响应自定义消息,并做相应的改变。
[/Quote]
............
na_he 2010-07-28
  • 打赏
  • 举报
回复
因为CMyView 是框架分割出来的,存在的。


// CMyView *pView; //为什么这样就出错
// pView->UpdatenNum(m_nNum);

这个是个空指针,对空指针进行操作,结果是可知的,就是crash.呵呵。
Eleven 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 beishuiqing 的回复:]
创建了一个视图类程序,在其中又创建了一个对话框,属于不同的类 然后我想让视图类中的某个变量随着对话框中编辑框的内容改变而改变,如何通过响应编辑框内容改变函数实现?
[/Quote]
按照你上面说的,你的对话框应该是视图窗口的子窗口,那么你在对话框中应该很容易访问视图类
wltg2001 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 worcy_kiddy 的回复:]
获得视图类的指针,发消息过去!
[/Quote]
如果要获取视图类的指针的话,就不用发消息了,直接改吧:
用:CXXXView pView=(CXXXView *)((CMainFrame*)AfxGetMainWnd())-> GetActiveView() ;
然后直接用pView操作视图吧
黑泡泡选手 2010-07-27
  • 打赏
  • 举报
回复
获得视图类的指针,发消息过去!
wltg2001 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 beishuiqing 的回复:]
创建了一个视图类程序,在其中又创建了一个对话框,属于不同的类 然后我想让视图类中的某个变量随着对话框中编辑框的内容改变而改变,如何通过响应编辑框内容改变函数实现?
[/Quote]
最方便的方法是,当编辑框内容改变时,向视图类发送自定义消息,通知视图类对话框已经改变,视图类响应自定义消息,并做相应的改变。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧