我如何区分终止程序的不同方法?

时间:2013-03-25 16:05:13

标签: c++ windows c++builder-2007

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

当我的程序关闭时,它应该根据它的关闭方式而有所不同:

  1. 用户点击了应用程序窗口的“X”:返回应用程序的用户登录名。
  2. 程序通过TaskManager终止:然后终止程序。这一点尤其重要,因为程序不能阻止Windows关闭。
  3. 获取一个或另一个很容易:实施TForm::OnClose()OnCloseQuery()来处理事件。但是,两者都没有告诉我导致事件的原因。还有另一种方法可以知道实际导致近似事件的原因吗?

1 个答案:

答案 0 :(得分:1)

您可以将主表单lsiten改为WM_SYSCOMMAND消息。如果您收到命令类型为SC_CLOSE的此消息,则表示您已知道用户已单击关闭按钮,按Alt + F4或从系统菜单中选择“关闭”。然后你可以做任何你喜欢的事情(而不是让默认动作关闭表格)。

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

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

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