MFC 怎么在对话框类中访问view类成员
作者&投稿:微储 (若有异议请与网页底部的电邮联系)
你想在按下按钮以后,CTextView函数就去访问m_theta的值
这很明显是一个事件,如果不通过发消息通知。
你的CTextView函数怎么知道什么时候去访问m_theta的值呢?
既然只有发消息,索性就把m_theta的值在消息中发过去不就好了吗?
将所要的值存放在对话框类CDialog的成员变量m_member里,在单文档的View中调用对话框类对象CDialog m_Dialog之后,m_Dialog.m_member就是你要的值了。
有很多种方法可以 ,我介绍两种:第一种:
CMainFrame *pFrameWnd = (CMainFrame*)AfxGetApp()->GetMainWnd;
pFrameWnd->GetActiveView();
第二种是利用全局变量the App,在CMyAPP这个类里有一个申明的全局变量。:
theApp.GetMainWnd()->GetActiveView();
最简单的办法是在View类里响应菜单消息,在消息响应函数里弹出对话框:
Ctestdlg dlg(pView);
dlg.Domodal();
需要为你的对话框类添加一个构造函数,Ctestdlg(CXXView *pView);然后添加一个成员变量保存pView的值,这个值就是View的指针。
适用。
这两种方法本质是和我百度到的是同一种方法吧......关于这种方法我有两个疑问:
第一, (CMainFrame*)AfxGetApp()->GetMainWnd中将指针强制转换,我想问一下为什么这样强制转换?
回答: 因为AfxGetApp()->GetMainWnd 需要强制转换的原因,
孙鑫不是讲了,字类强制转换成父类之后,子类的函数就不能用了。
你你逆向想一下。父类强制转换成子类会怎么样。
这样就会,你能使用子类的函数,全局变量。
为什么会有这种调用方式CWnd::FindWindow(,);这个就是调用静态的函数使用的,
你还是多看几遍吧。看懂了再说吧。 静态变量 静态函数?
第二,GetActiveView()是“获得指向活动视图的指针”,这句话什么意思,视图还有分活动和非活动吗?在SDI中可以用这个函数吗?
//可以用的。但是要正确的调用。
//多看几遍有益无害,
因为讲课是循环渐进的,
需要慢慢的了解这些。
碰到问题以后的课程就能解决这个问题的。
栋锦盐酸: 有很多种方法可以 ,我介绍两种: 第一种: CMainFrame *pFrameWnd = (CMainFrame*)AfxGetApp()->GetMainWnd; pFrameWnd->GetActiveView();第二种是利用全局变量the App,在CMyAPP这个类里有一个申明的全局变量.: theApp.GetMainWnd()->GetActiveView();
古塔区13361575695: MFC中CSYTView类怎么调用子对话框中内容 - ?
栋锦盐酸: 创建自对话框的时候把自对话框的指针保存到CSYTView类里面,然后通过子对话框指针访问自对话框.
古塔区13361575695: vc/mfc如何在对话框类中访问另一个对话框类的变量 - ?
栋锦盐酸: CFanBlade是类名称,不是实体,不可以这么使用. 可以用AfxGetApp()获得主程序的句柄完了一步步找到那个对话框的句柄CWnd* pWnd = AfxGetApp()->GetMainWnd();CMyDlg * pDlg;pDlg=(CMyDlg *) pWnd;pDlg->ShowMsg(pString);
古塔区13361575695: MFC 一个对话框类调用另一个类的成员变量 - ?
栋锦盐酸: 1. 使用全局变量2. 对话框A中,把IDC_EDIT1_A相关联的变量设置为类的静态成员变量,可以在B中访问3. 把A对话框编辑框的字符串,保存在主对话框变量中,这样B对话框也可以访问
古塔区13361575695: mfc中一个对话框怎么访问另一个对话框的控件 - ?
栋锦盐酸: 1、父窗口访问子窗口 获得子对话框的对象指针,通过子窗口的对象指针访问2、子窗口访问父窗口 把父窗口的控件对象传到子窗口中,子窗口提供一个接口
古塔区13361575695: MFC中,子线程怎样访问控件 - ?
栋锦盐酸: 定义一个对话框类的全局指针变量,把this赋值给它.如: CTestDlg* mythis; 在对话框初始化函数中: mythis=this; 在其它地方: mythis->GetDlgItem(IDC_EDIT1)->GetWindowTextW(str);
古塔区13361575695: MFC:模态对话框怎么访问主界面的数据成员?? - ?
栋锦盐酸: AfxGetMainWnd就可以访问了,不过注意的是,不能访问界面相关的内容,比如主窗口的控件变量.((CMainFrame *)AfxGetMainWnd())->变量名;
古塔区13361575695: MFC问题,如果我一个对话框的要访问另外一个对话框的成员变量,应该怎么做? - ?
栋锦盐酸: 假设有2个对话框A、B,对应的类为:CADlg、CBDlg 对话框A想访问对话框B的成员变量m_bData,那么m_bData就必须声明为public类型, 然后在CADlg里面定义一个CBDlg的实例m_bDlg,这样在对话框A就可以通过m_bDlg.m_bData的方式 访问对话框B的成员变量m_bData了
古塔区13361575695: MFC里怎么访问其他对话框里控件的关联变量 - ?
栋锦盐酸: 要先获取控件所在对话框对象或对象指针,记住,是“获取”,不是创建,获取控件所在对话框对象或对象指针后就可以通过控件所在对话框对象或对象指针来访问控件所关联的变量了.
古塔区13361575695: MFC中对话框如何访问文档成员变量? - ?
栋锦盐酸: 代码不需要保密的话:请把代码压成*.rar当附件发在 何丹的论坛(/) 上.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps. 如果不想注册,可用临时号,帐号和密码都是test2