静态函数里调用SetTimer,
void COpcServerDlg::OnClick()
{
HWND wnd=GetSafeHwnd ();
AfxBeginThread(ThreadProc,wnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
}UINT COpcServerDlg::ThreadProc(LPVOID param)
{
TAG *listTag[8];
HWND *hwnd=(HWND *)¶m;
......
......
((CWnd *)hwnd)->SetTimer (dlgTag->CurRow,1000,NULL);
return 0;
}
1.
在这条语句时总是出现:debug assertion failed.
((CWnd *)hwnd)->SetTimer (dlgTag->CurRow,1000,NULL);
2.
AfxBeginThread(ThreadProc,wnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
wnd传进去的地址是:0x002b0b59
但是 HWND *hwnd=(HWND *)¶m;转换后就成了其他的地址了,如:0x003ecccc
3。需要解决的是:
第一,这个问题如何解决?
第二,如何在主线程函数里调用SetTimer();
void COpcServerDlg::OnClick()
{
HWND wnd=GetSafeHwnd ();
AfxBeginThread(ThreadProc,wnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
}UINT COpcServerDlg::ThreadProc(LPVOID param)
{
TAG *listTag[8];
HWND *hwnd=(HWND *)¶m;
......
......
((CWnd *)hwnd)->SetTimer (dlgTag->CurRow,1000,NULL);
return 0;
}
1.
在这条语句时总是出现:debug assertion failed.
((CWnd *)hwnd)->SetTimer (dlgTag->CurRow,1000,NULL);
2.
AfxBeginThread(ThreadProc,wnd,THREAD_PRIORITY_NORMAL,0,0,NULL);
wnd传进去的地址是:0x002b0b59
但是 HWND *hwnd=(HWND *)¶m;转换后就成了其他的地址了,如:0x003ecccc
3。需要解决的是:
第一,这个问题如何解决?
第二,如何在主线程函数里调用SetTimer();
然后
dlgTag->CurRow是什么?合法吗?
HWND *hwnd=(HWND *)param;
用这个。
::SetTimer(*hwnd,dlgTag->CurRow,1000,NULL);再用这个就行了,基类里的。
谢谢大家的参与
怎么给分呀?