在子线程用调用::DestroyWindow无效,GetlastError为5---拒绝访问

在子线程用调用::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主线程做,包括创建,关闭对话框等。

你可能感兴趣的:(技术)