CManagerPersonnel类中
在头文件中定义CPersonnelInfo m_pPersonnel;
在BOOL CManagerPersonnel::OnInitDialog() 中初始化指针
m_pPersonnel.SetDlgPt(this);void CManagerPersonnel::Display(CString str)
{ SetDlgItemText(IDC_EDIT1,str);
MessageBox(str);
}
CPersonnelInfo类中定义 CManagerPersonnel* mPlg;
void CPersonnelInfo::SetDlgPt(CManagerPersonnel *ptr)
{
mPlg=ptr;}void CPersonnelInfo::OnButton1()
{
// TODO: Add your control notification handler code here if(!mPlg) return ;
mPlg->Display("hello world");}
当点击Button1出现错误 why?
在头文件中定义CPersonnelInfo m_pPersonnel;
在BOOL CManagerPersonnel::OnInitDialog() 中初始化指针
m_pPersonnel.SetDlgPt(this);void CManagerPersonnel::Display(CString str)
{ SetDlgItemText(IDC_EDIT1,str);
MessageBox(str);
}
CPersonnelInfo类中定义 CManagerPersonnel* mPlg;
void CPersonnelInfo::SetDlgPt(CManagerPersonnel *ptr)
{
mPlg=ptr;}void CPersonnelInfo::OnButton1()
{
// TODO: Add your control notification handler code here if(!mPlg) return ;
mPlg->Display("hello world");}
当点击Button1出现错误 why?
在头文件中定义CPersonnelInfo m_pPersonnel;
在BOOL CManagerPersonnel::OnInitDialog() 中初始化指针
m_pPersonnel.SetDlgPt(this);void CManagerPersonnel::Display(CString str)
{ SetDlgItemText(IDC_EDIT1,str);
MessageBox(str);
}
CPersonnelInfo类中定义 CManagerPersonnel* mPlg;
void CPersonnelInfo::SetDlgPt(CManagerPersonnel *ptr)
{
mPlg=ptr;}void CPersonnelInfo::OnButton1()
{
// TODO: Add your control notification handler code here if(!mPlg) return ;
mPlg->Display("hello world");}
当点击Button1出现错误 why?
{
mPlg=ptr;}
应该不用了吧,这已经把指针传进去了
仔细检查变量mPlg在Set之后,是否被越界的内存操作覆盖
在BOOL CManagerPersonnel::OnInitDialog() 中初始化指针
m_pPersonnel.SetDlgPt(this);你定义的m_pPersonnel对象和Onbutton1的那个对象是两个对象
所以出问题
想把CManagerPersonnel的指针传过去,最简单就是使用全局变量或者类的静态数据成员
将mPlg初始化为NULL
确认m_pPersonnel.SetDlgPt(this);确实被执行过...
你对话框类继承来的CPersonnelInfo
和在头文件中定义CPersonnelInfo m_pPersonnel;
是一个类产生的两个不同对象
A* g_this;//全局变量
A::A()
{
g_this = this;
}
B::Test()
{
g_this->
}