问题是这样的,建一个SDI工程,里面添加一个基于CFormView的类Form。
在View类里面添加一个Form*类型的指针p。重载View的OnCreate方法,在OnCreate中创建一个Form对象,并把地址赋给p。重载View的OnSize方法,通过p将Form的大小设成和View一样大。
在Form上摆放一些控件,比如一个按钮。
当鼠标点击Form上的非控件区域的时候,指针p就会清空,导致无法访问Form。
访问方法是 CMainFrame *pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWEQView *pView=(CWEQView*)pMain->GetActiveView();
pView->p->......这时p的值就会变成0但如果此时改变窗口大小,通过View的OnSize来看,p的值却又会变回之前Form的地址。不知道有谁知道是怎么回事。
还有如何能使得p的值不会发生变化,让我能访问到Form
在View类里面添加一个Form*类型的指针p。重载View的OnCreate方法,在OnCreate中创建一个Form对象,并把地址赋给p。重载View的OnSize方法,通过p将Form的大小设成和View一样大。
在Form上摆放一些控件,比如一个按钮。
当鼠标点击Form上的非控件区域的时候,指针p就会清空,导致无法访问Form。
访问方法是 CMainFrame *pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWEQView *pView=(CWEQView*)pMain->GetActiveView();
pView->p->......这时p的值就会变成0但如果此时改变窗口大小,通过View的OnSize来看,p的值却又会变回之前Form的地址。不知道有谁知道是怎么回事。
还有如何能使得p的值不会发生变化,让我能访问到Form
当你的view不是active的时候这个函数返回的就不是你那个view了
我认为可以把p指针定义为Static的。然后直接这样访问:
CWEQView::P->...
你直接将Form作为View不可以吗?