紧急求助:一个关于线程的问题
时间:12-13
整理:3721RD
点击:
我用measurement studio for VC写了一个基于对话框的程序,在对话框上有个绘图控
件——IDC_CWGRAPH1,属于CNiGraph类,在主程序里调用这个控件进行绘图操作
没有问题,但是如果在线程里就不行了。我用下面这个程序进行测试,发现
ASSERT_VALID(graph)会发生错误,怎么办啊?
int data[100];
UINT Message(LPVOID p)
{
CTestDlg *pdlg = ( CTestDlg *)CWnd::FromHandle((HWND)p);
ASSERT_VALID(pdlg);
CNiGraph * graph = ( CNiGraph *)pdlg->GetDlgItem(IDC_CWGRAPH1);
ASSERT_VALID(graph);
return 0;
}
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
int i;
for(i=0;i<100;i++)data[i]=i;
AfxBeginThread(Message,(LPVOID)this->GetSafeHwnd());
}
件——IDC_CWGRAPH1,属于CNiGraph类,在主程序里调用这个控件进行绘图操作
没有问题,但是如果在线程里就不行了。我用下面这个程序进行测试,发现
ASSERT_VALID(graph)会发生错误,怎么办啊?
int data[100];
UINT Message(LPVOID p)
{
CTestDlg *pdlg = ( CTestDlg *)CWnd::FromHandle((HWND)p);
ASSERT_VALID(pdlg);
CNiGraph * graph = ( CNiGraph *)pdlg->GetDlgItem(IDC_CWGRAPH1);
ASSERT_VALID(graph);
return 0;
}
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
int i;
for(i=0;i<100;i++)data[i]=i;
AfxBeginThread(Message,(LPVOID)this->GetSafeHwnd());
}
是不是因为pdlg指针没有初始话啊,直接把CTestDlg的this指针传给他试一下