我建了一个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;
}
------解决思路----------------------
上面a.draw()改成a->draw();
------解决思路----------------------
void dlg()
{
CTestDlg a;//望文生义吧,a应该是一个窗口类
a.draw();//a都没有Create,都没有窗口,draw里你GetDlgItem要Get谁啊?
}
------解决思路----------------------
就是要传句柄
------解决思路----------------------
或者你开辟个线程 线程函数会自动传this指针