Использование GetSaveFileName. Я указываю флаг OFN_EXPLORER, но всегда получаю старое диалоговое окно, если не избегаю как ловушки, так и шаблона. (lpfnHook и lpfnTemplate (и их соответствующие флаги «включения») в структуре OPENFILENAME)
Если я избегу использования одного или другого, я все равно получаю старый вид диалога. Я также не пробовал шаблон, но использую хук ... но всегда возвращаю TRUE из него (я видел упоминание "всегда возвращать false" из хука как способ получить старый интерфейс). Похоже, это не дало никакого эффекта.
РЕДАКТИРОВАТЬ: Добавлен соответствующий код:
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hInstance=RhInst;
ofn.hwndOwner=MainWh;
ofn.lpstrFilter=s;
ofn.lpstrCustomFilter=null;
ofn.nMaxCustFilter=0;
ofn.nFilterIndex=sel;
ofn.lpstrFile=fname;
ofn.nMaxFile=lstrl;
ofn.lpstrFileTitle=tfile;
ofn.nMaxFileTitle=lstrl;
if (path && lstrlen(path)) ofn.lpstrInitialDir=path;
else ofn.lpstrInitialDir=drive;
lstrcpy(SE_DefExt,ext);
ofn.lpstrDefExt=SE_DefExt;
if (titleid) ofn.lpstrTitle=title;
else ofn.lpstrTitle=null;
ofn.lpfnHook=(CommHookProc)MakeProcInstance((FARPROC)SEOpen32Hook,hInst);
ofn.lpTemplateName=NULL;
ofn.Flags=OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK | OFN_EXPLORER
| OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
if(allowfit)
{
ofn.lpTemplateName = MAKEINTRESOURCE(SAVETOFIT);
ofn.Flags |= OFN_ENABLETEMPLATE;
}
if (GetSaveFileName(&ofn))
{
// <snip>
}
Обратите внимание, что в этом случае "allowfit" не равен нулю / истина. Если я закомментирую настройку флага для OFN_ENABLEHOOK и OFN_ENABLETEMPLATE, я получу «новый» вид диалога.
** РЕДАКТИРОВАНИЕ 2:
Похоже, я запутался в том, что видел. Я полагаю, что в обоих случаях я получаю «новое» поведение и внешний вид OFN_EXPLORER. Когда я удаляю флаг OFN_EXPLORER, я получаю диалоговое окно очень старого стиля.
Я пытаюсь найти стиль диалогового окна «Сохранить файл», в правом верхнем углу которого есть кнопка «Назад» и «Вперед», и (что наиболее важно) - адресное поле, которое я могу ввести. Все мои предыдущие комментарии и описания кода (выше) все еще применяются; когда я удаляю Шаблон и Хук, я получаю свои кнопки «назад и вперед» и мое поле для ввода адреса (плюс дерево просмотра слева) ... когда я оставляю шаблон и хук на месте - я не (вместо этого есть список выбора «Сохранить в» вверху и «стандартные места» слева («Последние места», «Рабочий стол», ...).