当前位置: 代码迷 >> VC/MFC >> 在非成员函数里头调用公有函数失败
  详细解决方案

在非成员函数里头调用公有函数失败

热度:171   发布时间:2016-05-02 03:22:43.0
在非成员函数里面调用公有函数失败
我建了一个CTestDlg这个类,然后我用一个按钮调用自己写的非成员函数,这个非成员函数再调用这个类的公有成员函数。
为什么这个按钮不直接调用公有成员函数呢,因为这个程序是我用来测试的,原本这个非成员函数是回调函数。
废话不多说,直接上代码
void dlg()
{
CTestDlg a;
a.draw();
}

void CTestDlg::draw() 
{
         CDC *pDC = GetDlgItem(IDC_IMAGESHOW)->GetDC();
}

void CTestDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
dlg();
}

当我这样运行程序是,会报 winocc.cpp line 76 的错误,看了一下源码是说获取控件失败,为什么会失败呢?
求 大神 啊!!!
------解决思路----------------------
void dlg()
{
CTestDlg* a;
a = new CTestDlg;
a.draw();

.....
delete a;
a = NULL;
}
------解决思路----------------------
引用:
void dlg()
{
CTestDlg* a;
a = new CTestDlg;
a.draw();

.....
delete a;
a = NULL;
}


引用:
void dlg()
{
CTestDlg* a;
a = new CTestDlg;
a.draw();

.....
delete a;
a = NULL;
}


上面a.draw()改成a->draw();
------解决思路----------------------
void dlg()
{
CTestDlg a;//望文生义吧,a应该是一个窗口类
a.draw();//a都没有Create,都没有窗口,draw里你GetDlgItem要Get谁啊?
}
------解决思路----------------------
就是要传句柄

------解决思路----------------------
或者你开辟个线程 线程函数会自动传this指针
  相关解决方案