考虑一个只有一个窗口的应用程序。
如果窗口被激活 - 也就是窗口过程(WindowProc回调函数)接收到消息WM_ACTIVATE(或类似的WM_ACTIVATEAPP),它会执行一个操作。 (该操作是检查已打开的文件是否有更改;如果有,则询问用户是否要重新加载该文件)
问题在于:当用户执行像单击应用程序的关闭按钮或通过拖动标题栏移动窗口这样的操作时,WM_ACTIVATE/WM_ACTIVATEAPP消息也会被发送。但是,在接收到WM_CLOSE或WM_MOVE等相应消息之前,这些消息会先被接收。在这些情况下,显然希望在询问用户之前等待用户完成操作。
是否有可能延迟处理WM_ACTIVATE/WM_ACTIVATEAPP消息(当窗口即将被激活时分派的消息),并首先处理其他消息(在激活窗口的过程中分派的消息)?关键在于(如果我没有错的话),我没有办法知道最初处理WM_ACTIVATE/WM_ACTIVATEAPP消息时是否会接收到另一条消息,那么我应该如何根据未来发生的事情改变自己的行为呢?同时,我也找不到另一条消息,在窗口被激活后分派(这基本上是所需的)。
如果窗口被激活 - 也就是窗口过程(WindowProc回调函数)接收到消息WM_ACTIVATE(或类似的WM_ACTIVATEAPP),它会执行一个操作。 (该操作是检查已打开的文件是否有更改;如果有,则询问用户是否要重新加载该文件)
问题在于:当用户执行像单击应用程序的关闭按钮或通过拖动标题栏移动窗口这样的操作时,WM_ACTIVATE/WM_ACTIVATEAPP消息也会被发送。但是,在接收到WM_CLOSE或WM_MOVE等相应消息之前,这些消息会先被接收。在这些情况下,显然希望在询问用户之前等待用户完成操作。
是否有可能延迟处理WM_ACTIVATE/WM_ACTIVATEAPP消息(当窗口即将被激活时分派的消息),并首先处理其他消息(在激活窗口的过程中分派的消息)?关键在于(如果我没有错的话),我没有办法知道最初处理WM_ACTIVATE/WM_ACTIVATEAPP消息时是否会接收到另一条消息,那么我应该如何根据未来发生的事情改变自己的行为呢?同时,我也找不到另一条消息,在窗口被激活后分派(这基本上是所需的)。
WM_CLOSE
是一个特殊情况,但是仅仅因为用户稍微移动了窗口,就破坏你的应用程序这个功能似乎有些愚蠢。你可以将“是否要重新加载文件?”对话框设置为非模态,这样用户仍然可以自由地与主窗口交互(如果他们关闭它,你只需要关闭对话框)。 - undefinedWM_ACTIVATE
消息时检查它。 - undefined