.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が true になることはなく、閉じるボタンをクリックしてもフォームが閉じません。
私のアプリケーションは以前の OS (Windows 2000、XP、XP Embedded) で動作します。また興味深いのは、指定すると機能することです
Application.VisualStyleState = System.Windows.Forms.VisualStyles.VisualStyleState.ClientAreaEnabled;
ここで何が起こっているのか、どんな考えでも。これはデスクトップ Windows マネージャーに関連するものですか? 私のアプリケーションは閉じるボタンのクリック イベントをトラップできません。
前もって感謝します