vc++中,CMyView类中有一个公有成员变量m_code,如何才能把这个变量的值传给CMyDlg类中的编辑控件m_pCode(此类派生于CDialog类)
vc++中,CMyView类中有一个公有成员变量m_code,如何才能把这个变量的值传给CMyDlg类中的编辑控件m_pCode(此类派生于CDialog类) 问题点数:20、回复次数:15Top
1 楼jiach(夕飞云)回复于 2001-08-07 08:51:13 得分 0
请问各位高手,对于上面的问题,或者直接一点于,对于别的类,如何引用view
类的变量,成员函数。
我试图用CMyview *m_view; 来定义;
用m_pCode=m_view->m_code; 来符值; 嘻。。。。。。,,不行!!!Top
2 楼ruixp(锐剑)回复于 2001-08-07 08:56:09 得分 0
m_code必须在用之前已经复值
另外注意包含头文件Top
3 楼Elminster()回复于 2001-08-07 08:57:36 得分 10
CMyView* m_view 这个指针你赋值了没有啊?没有的话当然不能引用其中成员了。要解决你的问题,最简单的办法是在 stdafx.h 中定义一个 CMyView* 类型的全局变量,然后在 CMyView::OnInitialUpdate 中为之赋值,别处要用就可以用了。或者如果你在 CMainFrm 中可以调用其成员函数 GetActiveView 。
Top
4 楼ruixp(锐剑)回复于 2001-08-07 08:57:56 得分 0
还有在对话框类
用UpdateData(TRUE)Top
5 楼panda_w(好想睡啊!)回复于 2001-08-07 08:58:16 得分 0
怎么不用全局变量传递Top
6 楼hitpainter(勇敢的芯)回复于 2001-08-07 09:02:20 得分 0
给m_code复值
定义新的头文件a.h ,定义:extern xxx m_code
在引用m_pCode变量的cpp文件中,#include "a.h"
再用...m_pCode = ...m_code即可Top
7 楼yayj(扬帆)回复于 2001-08-07 09:05:20 得分 0
m_code的访问权限应该是public或者另外的那个类是CMyview的friend,而且m_view应该是个实例化了的指针,如果满足以上两条就肯定可以。Top
8 楼jiach(夕飞云)回复于 2001-08-07 09:07:13 得分 0
CMyView* m_view 这个指针如何赋值呢? 难道用GetView不成?请指教!Top
9 楼jiach(夕飞云)回复于 2001-08-07 09:08:37 得分 0
如何实例化呢?Top
10 楼ydogg(灰毛兔频频)回复于 2001-08-07 18:48:48 得分 5
panda_w(好想睡啊!) 说的很明白啊。
一个全局变量就是最简单的解决办法。
1。在你的CXXXApp中
int m_code;
2。在你的视类中
这样引用
CYourApp *p=(CYourApp*)AfxGetApp();
m_viewcode=p->m_code;
3.在你的dlg中也是一样的使用。Top
11 楼zhang_qxian(blueman2001)回复于 2001-08-07 19:46:15 得分 0
是啊,尽管用全局变量不是很好的面向对象的编程风格,但有时候用它就很解决问题!Top
12 楼aileen_long(期待2002)回复于 2001-08-07 20:13:08 得分 5
为什么要用全局变量!在你的dlg头文件中定义CView *pView;
修改它的构造函数,加一个参数(CView *view...),在函数体中加一句:pView=view;
在CMyview中构造dlg的时候这样写:Dlg dlg(this...)
这样你就可以在Dlg中利用pView使用CMyView中的任何公共成员了。Top
13 楼oldmonsterman(飞龙在天)回复于 2001-08-07 20:30:33 得分 0
用全局变量,我也做过类似的东西。在app中声明 m_code,在视类中取得app的引用,
再dlg中updatedata(false),即可Top
14 楼Suddy(风)回复于 2001-08-07 21:32:13 得分 0
在多窗口这样使用:
CChildFrame* pActiveWnd = (CChildFrame*)((CMainFrame *)AfxGetMainWnd())->MDIGetActive(&bMaximized);
CMYView *pActiveView = NULL;
if (!pActiveWnd)
{
return;
}
pActiveView = (CMYView *)pActiveWnd->GetActiveView();
单个窗口更简单一些Top
15 楼jiach(夕飞云)回复于 2001-08-08 09:25:45 得分 0
成功了,
我是用GetActiveView()实现的,
不过这里有个问题就是在frame类里用了此法后,运行会出错,我在app的.h文件的开头加了一句:CMyView view; 结果就没错了!!!
原因不清楚,哪位高手可否解释一下Top
相关问题
- 为什么CDialog的m_hWnd值为0
- m,m,m,m,m,m,m
- 怎样可以让CMainFrame的成员m_cDialog,用ShowWindow(SW_SHOW)显示?
- JI呀 !!! CMyDlg类中有一成员变量m_str(CString型),如何给使之能显示出"xxx"字符?
- 很菜的问题:怎样在CMainFrame中访问CMyView中自定义成员变量m_nNum?
- 如何在CMyView类中得到一个来自CMainFrame类的字符串指针m_mypapa的值?
- 如何在CMyView类中得到一个来自CMainFrame类的成员变量m_mypa(public类型的)的值?
- 為什麼會出現CDialog::PreModal()的函數體中Assert(m_hWnd==NULL)的錯誤!急!!急!!在線等!!
- M$ COM
- M$的XMLDOM




