0

我正在使用 C++Builder 2007 为 Windows 编写程序。

当我的程序关闭时,它的行为应该会有所不同,具体取决于它的关闭方式:

  1. 用户单击应用程序窗口的“X”:返回应用程序的用户登录。
  2. 程序通过 TaskManager 终止:然后在那里终止程序。这一点尤其重要,因为程序不能阻止 Windows 关闭。

得到一个 OR 另一个很容易:实现一个TForm::OnClose()orOnCloseQuery()来处理事件。但是,两者都没有告诉我导致事件的原因。是否有另一种方法可以知道实际导致关闭事件的原因?

4

1 回答 1

1

您可以使您的主窗体 lsiten 到WM_SYSCOMMAND消息。如果您收到这条命令类型为 的消息SC_CLOSE,那么您就知道用户已经单击了关闭按钮、按下了 Alt+F4 或从系统菜单中选择了“关闭”。然后你可以做任何你喜欢的事情(而不是让默认操作关闭表单)。

例如,您可以再次显示登录对话框。

这不会影响关闭主窗体/应用程序的其他方式,因此您仍然可以从任务管理器中的(第一个选项卡)关闭应用程序。

[以前,这个 Q 被标记为 Delphi。因此,我的答案的第一个版本包含了这个想法的 Delphi 实现。]

于 2013-03-25T16:16:13.673 回答