无法在线程中调用EndDialog?

use*_*053 3 winapi multithreading

我希望在线程结束时关闭模态对话框.我知道如何使用PostMessageSendMessage,但为什么我不能直接调用EndDialog成员函数?如果我这样做,它会导致App异常.

Ken*_*err 8

需要从创建模式对话框的线程调用EndDialog,特别是对话框过程.听起来你想从另一个线程调用它.要从另一个线程关闭对话框,您需要发布一条消息,因为跨线程支持该消息.然后,对话框可以响应消息并自行关闭.调用线程需要在销毁线程之前等待对话框关闭.

如果您想知道为什么会这样,那么大多数USER API函数都具有线程关联性.它们最初是以这种方式实现的,并不是为支持跨线程使用而设计的.