c++ 怎样从任意类获取CDocument类指针
发布网友
发布时间:2023-07-02 18:12
我来回答
共3个回答
热心网友
时间:2024-11-01 14:09
使用AfxGetApp()->GetMainWnd()获取到的不是view的指针,而是main frame的指针。需要再调用main frame的GetActiveView()函数来获取当前活动的view的指针。
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->GetMainWnd();
CXXXView *pView=(CXXXView *)pMain->GetActiveView();
CXXXDoc *pDoc = (CXXXDoc *)pView->GetDocument();
别忘了#include相应的main frame, view和doc的头文件。
热心网友
时间:2024-11-01 14:09
单例模式。
class CDocument {
private :
static CDocument* stInstance;
public :
static CDocument* getInstance() {
if(CDocument::stInstance == null)
CDocument::stInstance=new CDocument();
return CDocument::stInstance();
}
.......................................................
}
然后任何地方就可以:
CDocument::getInstance()得到进程内唯一的对象指针。
注:如果CDocument类不能修改,就定义另外一个类,改改就行了。追问不是这个意思
例如在
CTestView类可以调用GetDocument()函数
现在我新建了一个CMyClass类
怎么获取CTestDoc的指针呢
CTestDoc *doc=((CTestView*)AfxGetApp()->GetMainWnd())->GetDocument();
为什么要出错
追答……这个问题描述得…………。实在看不懂。
出错?什么错?是告诉GEtDocument()方法不能调用?
只能猜了,检查函数的权限是不是public。或者看看是不是被定义友元。
热心网友
时间:2024-11-01 14:09
CDocument * pt = new CDocument;
就这样 定义一个指针 pt 指向 CDocument 类;