показать всплывающее сообщение перед диалогом SaveAs - PullRequest
0 голосов
/ 01 декабря 2010

Можно ли в приложении Windows показывать всплывающее сообщение перед диалоговым окном SaveAs после открытия диалогового окна SaveAs?Все, что мне удалось получить, это всплывающие окна после закрытия диалога.

Мне нужно отредактировать старое приложение, написанное на C ++ (я не автор), но не могу справиться с этой задачей.Это часть кода:

/ * ---- вызывается для отображения диалогового окна сохранения файла ---- * /

ofn.hwndOwner = hwnd; 
ofn.lpstrFile = lpstrFileName; 
ofn.lpstrTitle = lpstrTitleName;

res = GetSaveFileNameW( &ofn );

/* ---- fix file extension ---- */

MessageBox(NULL, "Test", "Testing", MB_OK);

Спасибо,
Илья

Ответы [ 3 ]

3 голосов
/ 01 декабря 2010

Если я вас правильно понял, вы хотите проверить некоторые вещи (например, расширение файла) перед закрытием диалога и показать сообщение без закрытия. Если это так, посмотрите на флаг 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 */
        }
    }
}

Надеюсь, это будет полезно для вас.

0 голосов
/ 01 декабря 2010

Звучит так, будто вы хотите расширить графический интерфейс диалогового окна сохранения файла.Вы можете расширить графический интерфейс, используя собственный шаблон ресурса диалога, и указать OFN_ENABLETEMPLATE.Это количество приложений, которые показывают предварительный просмотр / метаданные документов.

0 голосов
/ 01 декабря 2010

Вы можете, но это было бы довольно взломать.Вам придется создать FileDialog и открыть его немодальным, а не модальным и скрытым.Итак, окно есть, но вы его не видите.Когда вы нажмете свое «всплывающее окно», вы можете затем отобразить диалоговое окно.

...