2

この質問に従って、カスタム テンプレートの説明を使用して Win32 ファイルの保存ダイアログをカスタマイズしています。現在、コンピューターや最近の場所などで [ファイルの保存] ダイアログに左側のバーが表示されないという問題があります。カスタム テンプレートを削除すると、左側のサイドバーが元に戻ることを確認できます。その削除を正当化するために私は何をしていますか? どうすれば両方を入手できますか?

更新:これが私が持っているコードの一部です:

info.hInstance = MyGetModuleInstanceRoutine();
info.lpfnHook = MyOFNHookProcRoutine;
info.lpTemplateName = MAKEINTRESOURCEW(myCustomResourceID);
info.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_NOREADONLYRETURN |
              OFN_ENABLESIZING | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLETEMPLATE;

::GetSaveFileNameW(&info);

ノート:

  • MyOFNHookProcRoutine常に 0 を返します。
  • 拡張フラグOFN_EX_NOPLACESBARを認識していますが、設定されていません (つまりFlagsEx、0 です)。
4

2 に答える 2

1

RED SOFT ADAIRからの回答に追加-StefanWoe

WINVERと_WIN32_WINNTを>=0x0500の値に設定します。

OPENFILENAME構造体のサイズはWindows2000で大きくなり、余分なスペースにはFlagsExメンバーが含まれています。OFN_EX_NOPLACESBAR構造が小さすぎてフラグを含めることができない場合、Windowsはフラグを想定しているようです。lStructSizeメンバーも正しく設定されていることを確認してください。

于 2010-01-07T21:36:04.570 に答える
1

使ってみてください

#define _WIN32_WINNT 0x0501 

#include "windows.h"

それは私にとって同じ問題を誤って解決しました。

于 2010-01-07T21:16:56.940 に答える