PostThreadMessage 发送的消息都不会发送到窗口,因为没有窗口句柄。只有 WM_QUIT 起作用,除非消息循环自己来写。
SendMessage可以发送消息,然后当前线程阻塞,窗口(主线程)会在队列中得到这个消息,这个是看调用栈看的,具体原理有待研究。
例如:
SendMessage(dlgMain.m_hWnd, WM_COMMAND, (WPARAM)(IDCANCEL), 0);
还有,在 WTL 中,如果发送 WM_DESTROY,会导致 dlgMain 析构的时候 m_hwnd 没有释放。具体为什么有待研究。