请教,如何在线程执行完后关闭当前窗口,关闭不了

时间:2022-10-21 19:51:35
如何在线程执行完后关闭当前窗口,我想在线程执行完后,在线程函数中关闭当前窗口,我试了以下几个方法都不行。请教下如何处理,注意这几个函数都是放线程函数中的。谢谢


UINT TFunc_Update(LPVOID lpParam)
{
//处理数据。。。。。。
完了以后开始关闭,下面几个方法都不管用
pWnd->CloseWindow();
// ::PostQuitMessage(0);
// AfxGetApp()->ExitInstance();
// AfxGetApp()->GetMainWnd()->CloseWindow();
return 0;
}

9 个解决方案

#1


给主线程发关闭的消息!

#2


让主线程去关闭。。。。。

#3


能详细点吗

#4


::PostMessage(hWnd
,WM_CLOSE,0,0);

#5


AfxGetApp()->PostThreadMessage(WM_CLOSE,0,0);这样?好像也不行,还是消息也要自己定义

#6


用全局api, 窗口句柄要从线程参数中获得。 

#7


引用 4 楼 cpp2017 的回复:
::PostMessage(hWnd
,WM_CLOSE,0,0);


::PostMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_CLOSE, 0, 0);
::SendMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_COLSE, 0, 0);
这两个有什么区别,为什么我用上面的可以,用下面的却不可以呢

#8


可以用lpParam包含要关闭的窗口的句柄 或者是窗口指针    发送关闭消息  sendmessage( ,WM_CLOSE,,) 

#9


引用 4 楼 cpp2017 的回复:
::PostMessage(hWnd
,WM_CLOSE,0,0);


为什么我用
::PostMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_CLOSE, 0, 0);可以,而用sendmessage却不行呢。

另外,我上面的其他方法为什么都不行。想知道下原因

#1


给主线程发关闭的消息!

#2


让主线程去关闭。。。。。

#3


能详细点吗

#4


::PostMessage(hWnd
,WM_CLOSE,0,0);

#5


AfxGetApp()->PostThreadMessage(WM_CLOSE,0,0);这样?好像也不行,还是消息也要自己定义

#6


用全局api, 窗口句柄要从线程参数中获得。 

#7


引用 4 楼 cpp2017 的回复:
::PostMessage(hWnd
,WM_CLOSE,0,0);


::PostMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_CLOSE, 0, 0);
::SendMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_COLSE, 0, 0);
这两个有什么区别,为什么我用上面的可以,用下面的却不可以呢

#8


可以用lpParam包含要关闭的窗口的句柄 或者是窗口指针    发送关闭消息  sendmessage( ,WM_CLOSE,,) 

#9


引用 4 楼 cpp2017 的回复:
::PostMessage(hWnd
,WM_CLOSE,0,0);


为什么我用
::PostMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_CLOSE, 0, 0);可以,而用sendmessage却不行呢。

另外,我上面的其他方法为什么都不行。想知道下原因