在子线程用调用::DestroyWindow无效,GetlastError为5---拒绝访问
CDialogTest *g_pSetModeless2=NULL;
DWORD WINAPI TestThreadFun(LPVOID lpParam)
{
if(g_pSetModeless2!=NULL)
{
bool r=::DestroyWindow(g_pSetModeless2->m_hWnd);
//〖5〗-拒绝访问。
OutputLog(LOG_DEBUG,"in TestThreadFun DestroyWindow(%#x),GetlastError=%d,r=%d\n",g_pSetModeless2->m_hWnd,GetLastError(),r);
g_pSetModeless2=NULL;
}
return 0;
}
void CTestMyplayerDlg::OnBnClickedButton()
{
int dwThreadId=NULL;
//工作线程
HANDLE hGetCurThread = CreateThread(NULL,
0,
TestThreadFun,
0,
0,
(LPDWORD)&dwThreadId);
}
结论:界面相关的操作,尽量在UI主线程做,包括创建,关闭对话框等。