PSN_QUERYCANCEL не закрывает страницу свойств - PullRequest
2 голосов
/ 16 августа 2011

У меня есть созданный мной лист свойств, и все вкладки имеют одинаковую pfnDlgProcpfnDlgProc у меня есть этот код:

switch (msg) {
    case WM_NOTIFY:
        nmhdr = (NMHDR*)lParam;

        switch (nmhdr->code) {
            case PSN_QUERYCANCEL:
                printf("PSN_QUERYCANCEL\n");
                SetWindowLong(nmhdr->hwndFrom, DWL_MSGRESULT, FALSE);

                return TRUE;
        }

        break;

    ...
}

Когда я нажимаю кнопку Отмена на листе свойств, печатается PSN_QUERYCANCEL, но лист свойств не закрывается.Почему это?Есть ли что-то еще, что я должен сделать, чтобы позволить это / сделать это близко?Я знаю, что могу добавить DestroyWindow(nmhdr->hwndFrom) к обработчику, но это правильный способ сделать это?

1 Ответ

0 голосов
/ 15 сентября 2011

Вы устанавливаете DWL_MSGRESULT для дескриптора окна, который отправил вам уведомление, но не обязательно для окна, для которого вы обрабатываете WM_NOTIFY. Вместо использования дескриптора окна nmhdr-> hwndFrom, попробуйте использовать HWND, который передается в ваш pfnDlgProc.

...