DialogBoxParam и GetOpenFileName - PullRequest
       38

DialogBoxParam и GetOpenFileName

0 голосов
/ 09 января 2012

Прежде всего, вот мой конфиг:

VS2010/Debug/C++ Win32 Project/Vista Home Premium

Вызов GetOpenFileName с помощью кнопки (CreateWindow) в окне (CreateWindow) не доставляет мне никаких проблем: открытый диалог работает нормально, я могу нажимать, переходить в другую папку и т. Д. *

Теперь я заменяю CreateWindow на DialogBoxParam (который должен вызывать CreateWindow за кулисами) тем же (DLGPROC)WndProc и вызываю тот же GetOpenFileName. Здесь диалог открытия ведет себя странно: похоже, работает только двойной щелчок мыши (= заполнение ofn.lpstrFile и закрытие диалога открытия). Невозможно нажимать кнопки «Открыть» и «Отмена» и не может перемещаться.

Кто-нибудь испытывал это раньше? Любые известные причины, по которым диалог Open как бы «завис». Принадлежит ли родитель или нет (ofn.hwndOwner = hwnd; ofn.hwndOwner = NULL;) дает ту же проблему.

Спасибо N

1 Ответ

2 голосов
/ 09 января 2012

Вы написали

с тем же (DLGPROC) WndProc

Это ваша ошибка.Процедура диалога и процедура окна не одно и то же.Они следуют другим правилам, и если вы будете следовать правилам WndProc, когда должны следовать правилам DlgProc, тогда произойдут плохие вещи.

...