0から始めるVisualStudio2022:ソフト開発塾
前回のダイアログボックスにメニューを修正して
ファイルオープンのダイアログを表示する。
GetOpenFileNameW を使用すればOKらしい。
dialog001_01.cppのソースを次のように修正する。
#include <windows.h>
#include "resource.h"
BOOL dialog_proc(
HWND hDlg,
UINT msg,
WPARAM wPara,
LPARAM lPara
) {
return FALSE;
}
BOOL dialog_cmd(
HWND hDlg,
WPARAM wPara,
LPARAM lPara
) {
switch (LOWORD(wPara)) {
case ID_MENU_FILEOPEN:
//https://learn.microsoft.com/ja-jp/windows/win32/dlgbox/using-common-dialog-boxes
OPENFILENAME ofn; // common dialog box structure
char szFile[260]; // buffer for file name
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hDlg;
ofn.lpstrFile = (LPWSTR)szFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("Text\0*.TXT\0All\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box.
if (GetOpenFileNameW(&ofn) == TRUE) {
MessageBoxW(hDlg, (LPWSTR)szFile, TEXT("OPEN FILE NAME"), MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL);
} else {
MessageBoxA(hDlg, "ERROR OPEN FILE NAME ", "err", MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL);
}
break;
}
return FALSE;
}
Top 次