Здравствуйте, у меня есть простое приложение c-sharp для Windows.У меня есть кнопка в этой форме, которая запускает другую немодальную всплывающую форму (фиксированное окно инструментов).Внутри всплывающей формы я продолжаю отслеживать сообщение Windows, которое пользователь выполняет во всплывающей форме.Всякий раз, когда пользователь закрывает форму (всплывающее окно), я устанавливаю флаг m_bQueryShutdownSent в значение true, это означает, что основная форма должна что-то делать.отследить, нажал ли пользователь кнопку закрытия и установить флаг m_bCloseButtonActive
#region WndProc
const int WM_NCHITTEST = 0x0084;
const int WM_NCMOUSEMOVE = 0x00A0;
const int HTCLOSE = 0x0014;
const int WM_QUERYENDSESSION = 0x0011;
private bool m_bCloseButtonActive = false;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCHITTEST)
{
base.WndProc(ref m);
m_bCloseButtonActive = (m.Result.ToInt32() == HTCLOSE);
}
else
{
if (m.Msg == WM_QUERYENDSESSION && this.m_oParentForm != null)
this.m_bQueryShutdownSent = true;
base.WndProc(ref m);
}
}
#endregion WndProc
Проблема в том, что этот фрагмент кода работает на компьютерах с XP / 32-битной версиейЭто не на Windows 7 x64 (хотя мое приложение настроено для работы в качестве 32-разрядного приложения).Всплывающий код не может обработать действие нажатия кнопки закрытия (Windows 7).Хотя это возможно на 32-битных машинах XP / XP-Embedded / 2000
Любая помощь в этом отношении высоко ценится