Если я вас правильно понял, вы хотите проверить некоторые вещи (например, расширение файла) перед закрытием диалога и показать сообщение без закрытия. Если это так, посмотрите на флаг OFN_ENABLEHOOK в Структура OPENFILENAME . В этом случае ваш код будет выглядеть примерно так:
ofn.hwndOwner = hwnd;
ofn.lpstrFile = lpstrFileName;
ofn.lpstrTitle = lpstrTitleName;
/* enables the hook function */
ofn.Flags |= OFN_ENABLEHOOK;
ofn.ofn.lpfnHook = (LPOFNHOOKPROC) MyHookProc;
/* some code here */
res = GetSaveFileNameW( &ofn );
Код для MyHookProc
будет выглядеть так:
static UINT CALLBACK MyHookProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_NOTIFY) {
OFNOTIFYW *notify = (OFNOTIFYW *) lParam;
if (notify->hdr.code == CDN_FILEOK) {
/* your code here */
}
}
}
Надеюсь, это будет полезно для вас.