Windowsリソースを使用して、 標準のFileOpenDialogを呼び出すダイアログを定義できますか? アイデアは、このようなリソースファイルのエントリ(多分DIALOGまたはDIALOGEX?)リソースファイルから使用するCOMダイアログを指定することはできますか?
これが可能であると(source)の下に貼り付けた一人として、コードを交換するのですか?質問
へ
/* https://msdn.microsoft.com/en-us/library/windows/desktop/ff485843(v=vs.85).aspx */
#include <windows.h>
#include <shobjidl.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
IFileOpenDialog *pFileOpen;
// Create the FileOpenDialog object.
hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL,
IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen));
if (SUCCEEDED(hr))
{
// Show the Open dialog box.
hr = pFileOpen->Show(NULL);
// Get the file name from the dialog box.
if (SUCCEEDED(hr))
{
IShellItem *pItem;
hr = pFileOpen->GetResult(&pItem);
if (SUCCEEDED(hr))
{
PWSTR pszFilePath;
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
// Display the file name to the user.
if (SUCCEEDED(hr))
{
MessageBox(NULL, pszFilePath, L"File Path", MB_OK);
CoTaskMemFree(pszFilePath);
}
pItem->Release();
}
}
pFileOpen->Release();
}
CoUninitialize();
}
return 0;
}
背景には、私が「RC」、リソースコンパイラでコンパイルしたウィンドウのリソースファイルを表示する他の場所での例でもMSDEV center からMSDNのチュートリアルを次しています。
私は最近、「ダイアログボックス(hInstanceは、MAKEINTRESOURCE(IDD_ABOUTDIALOG)、hWndを、& AboutDialogProc)を」ダイアログ「について」全体がリソースファイルに指定して使用してWindowsプログラムで参照されている例を見た(link)
IDD_ABOUTDIALOG DIALOGEX 0, 0, 147, 67
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
ICON IDI_APPICON,IDC_STATIC,7,7,20,20
LTEXT "Win32 Test application.",IDC_STATIC,34,7,86,8
LTEXT "©2013 Transmission Zero",IDC_STATIC,34,17,86,8
DEFPUSHBUTTON "OK",IDOK,90,46,50,14,WS_GROUP
END
読んでいただきありがとうございます!
ダイアログリソースはコード生成ツールではありません。ウィンドウの作成方法と配置方法について説明しています。 –
ダイアログエディタは、貧しい人のUIデザイナーのようなものです。ポイントアンドクリックのデザインは非常に便利ですが、それを使用するにはコードを持っていなければなりません。最小限のプログラム[ここにある](https://stackoverflow.com/a/10233086/17034)。 –
理由のために、標準のダイアログがあります。新しい機能やデザインが標準のダイアログに追加されてから数年後に機能が不足し、 "oldschool"に見える独自のファイルダイアログを実装して、ホイールを再開発しようとしないでください。 'IFileOpenDialog' /' IFileSaveDialog'の周りに小さなラッパー関数を書くだけで、ファイルダイアログを呼び出す必要があるたびに自分自身を繰り返す必要はありません。 – zett42