起因是该CPropertySheet在一个SDI的VIEW里,而我想在某个CPropertyPage里用DOCUMENT的数据,直接用GetDocument()不行,而在CPropertySheet里可以用GetDocument(),所以我想在CPropertyPage里调用CPropertySheet的指针。===============================
或者还有什么其他的方法没?
或者还有什么其他的方法没?
解决方案 »
- GetDC出现问题:function does not take 0 parameters?
- 请问操作word中的SetPageWidth函数的用法
- 自定义控件
- 升一星,散200分!
- ”Run-Time Check Failure #2 - Stack around the variable 'chTemp' was corrupted.“是什么错误?
- 汉字区位码?
- 在VC里有类似VB的StrConv()吗,我想将字符转换成Unicode
- 求帮忙解决一个USB端口对应关系的问题
- 老问题:如何实现-实时画曲线:下方有滚动条,历史曲线、现在曲线均有,曲线显示最新接收的数据
- 请问udp包最大字节数为多少?
- 谁有实现xp主题的例程?
- 如何下到<<WINDOWS网络编程技术>>附带光盘的原码
在CPropertyPage::AddPage()之前,将指针传给CPropertyPage
//////////////////////////////////////////////////
#include "Page1.h"
class CMonitor // 这是CPropertySheet的类
{
public:
CPage1 page1;
}///////////////////////////////////////////////////
#include "Monitor.h"
class CPage1 // 这是CPropertyPage的类
{
public:
CMonitor *pMonitor;
}这怎么处理?
// 以下是在属性页的.cpp文件里
CMonitor* pMonitor = (CMonitor *)GetParent();
int nItem = m_ServerList.GetNextSelectedItem(pos);
CMyDoc* pDoc = (CMyDoc*)pMonitor->GetDocument();
pDoc->strSwitch = m_List.GetItemText(nItem, 0);// 执行这句时出错,直接转到了CString类的MFC的“=”重载那里了。怎么回事呀?
int nItem = m_List.GetNextSelectedItem(pos);
CMyDoc* pDoc = (CMyDoc*)pMonitor->GetDocument();
pDoc->strSwitch = m_List.GetItemText(nItem, 0);
int nItem = m_ServerList.GetNextSelectedItem(pos);
CMyDoc* pDoc = (CMyDoc*)pMonitor->GetDocument();
pDoc->strSwitch = m_List.GetItemText(nItem, 0);// strSwitch是文档类里的一个变量,要修改的就是它。
pDoc->strSwitch = m_List.GetItemText(nItem, 0);
出现问题。而且“=”右边没问题,问题是pDoc->strSwitch不能被赋值,奇怪?!
=========================================================
你在CPage1类中包含你的文档类型,定义指针变量。然后在CPropertySheet中获得文档指针,传递给CPage1中的这些指针变量就可以了啊。
=========================================================我发现用GetParent()得到的是一个新的对象,不是原先的那个,不知道为什么。另外,happyparrot(快乐鹦鹉)的这个方法:
=========================================================
在CPage1中,可以将#include "Monitor.h"改为class CMonitor;然后在CPage1的cpp文件中再#include "Monitor.h"就没问题了。
=========================================================
我没有具体试试,但我想知道其原理是啥?这类循环引用的问题都可以用这种方式解决吗?