怎么从一个对话框类获得View类的成员
如何从一个对话框类获得View类的成员?
因为对话框里有一个ListBox要用到view下的成员
是不是在对话框类的构造函数里,将view类作为父窗口.但是不知道怎么弄?
------解决方案--------------------
MainFrame -> ActiveView
------解决方案--------------------
构造对话框的时候把视图指针作为构造函数的参数,在对话框中用GetParant可以获得改指针,强制转换一下就可以了。
------解决方案--------------------
如果对话框是从CView的代码中生成的话,可以这样做,改一个对话框类的构造函数,加一个参数,类型为CxxxView * pView;
构造时用CxxxView(this);将CView的指针传给对话框
------解决方案--------------------
class CYourView;
class CBufDlg : public CDialog
{
// Construction
public:
CBufDlg(CWnd* pParent = NULL);
...
CBufDlg (CYourView* pView);
CYourView* m_pView;
}
CBufDlg::CBufDlg(CEx1View* pView)
: CDialog(CDag::IDD)
{
m_pView = pView;
}
以在视图调用为例:
#include "BufDlg.h"
void CYourView::OnTest()
{
CBufDlg dlg(this);
dlg.DoModal();
}
------解决方案--------------------
我想到的是给CBufDlg的构造函数的pParent传递CView指针不是更好吗?
=====
可以的。
CBufDlg::CBufDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDag::IDD, pParent)
{
//{{AFX_DATA_INIT(CDag)
// NOTE: the ClassWizard will add member initialization here
m_pView = (CYourView*)pParent;
//}}AFX_DATA_INIT
}
#include "BufDlg.h"
void CYourView::OnTest()
{
CBufDlg dlg(this);
dlg.DoModal();
}
------解决方案--------------------
你试下这个函数GetActiveView();最好在MSDN中查下
因为对话框里有一个ListBox要用到view下的成员
是不是在对话框类的构造函数里,将view类作为父窗口.但是不知道怎么弄?
------解决方案--------------------
MainFrame -> ActiveView
------解决方案--------------------
构造对话框的时候把视图指针作为构造函数的参数,在对话框中用GetParant可以获得改指针,强制转换一下就可以了。
------解决方案--------------------
如果对话框是从CView的代码中生成的话,可以这样做,改一个对话框类的构造函数,加一个参数,类型为CxxxView * pView;
构造时用CxxxView(this);将CView的指针传给对话框
------解决方案--------------------
class CYourView;
class CBufDlg : public CDialog
{
// Construction
public:
CBufDlg(CWnd* pParent = NULL);
...
CBufDlg (CYourView* pView);
CYourView* m_pView;
}
CBufDlg::CBufDlg(CEx1View* pView)
: CDialog(CDag::IDD)
{
m_pView = pView;
}
以在视图调用为例:
#include "BufDlg.h"
void CYourView::OnTest()
{
CBufDlg dlg(this);
dlg.DoModal();
}
------解决方案--------------------
我想到的是给CBufDlg的构造函数的pParent传递CView指针不是更好吗?
=====
可以的。
CBufDlg::CBufDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDag::IDD, pParent)
{
//{{AFX_DATA_INIT(CDag)
// NOTE: the ClassWizard will add member initialization here
m_pView = (CYourView*)pParent;
//}}AFX_DATA_INIT
}
#include "BufDlg.h"
void CYourView::OnTest()
{
CBufDlg dlg(this);
dlg.DoModal();
}
------解决方案--------------------
你试下这个函数GetActiveView();最好在MSDN中查下