3

我想在线程结束时关闭模态对话框。我知道怎么用PostMessageor SendMessage,但是为什么不能直接调用EndDialog成员函数呢?如果我这样做,它会导致应用程序异常。

4

1 回答 1

8

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

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

于 2013-01-29T16:21:49.737 回答