我有一个 .net 2.0 Windows 窗体应用程序。
我已经重写了 WndProc 方法来捕获表单上的用户活动
前任:
const int HTCLOSE = 0x0014;
bool m_bCloseButtonActive = false;
if (m.Msg == WM_NCHITTEST)
{
base.WndProc(ref m);
m_bCloseButtonActive = (m.Result.ToInt32() == HTCLOSE);
}
基于 m_bCloseButtonActive 的值,我采取进一步的行动。
我现在面临的问题是我的表单无法关闭,因为它无法捕获操作系统 Vista 及更高版本(甚至 Windows 7)中的关闭按钮单击事件。
即条件m.Result.ToInt32() == HTCLOSE永远不会为真,当我单击关闭按钮时,我的表单永远不会关闭。
我的应用程序可以在以前的操作系统(Windows 2000、XP、XP Embedded)中运行。还有一个有趣的事情是它在我指定时起作用
Application.VisualStyleState = System.Windows.Forms.VisualStyles.VisualStyleState.ClientAreaEnabled;
知道这里发生了什么。这是否与桌面 Windows 管理器有关,我的应用程序无法捕获关闭按钮单击事件。
提前致谢