MFC使用button選択ファイル(クリップ)の実装
1447 ワード
1.ファイルを開く
インタフェースでこのボタンを使用すると、メインインタフェースのタイトルバーがグレーになります.つまり、フォーカスが失われます.解決策: VS 2008以上のバージョンを使用するとこの問題が発生し、ここで最も直接的な処理方法: インタフェースのCDialogExをすべてCDialogに置き換えると解決する(拡張ウィンドウクラスの小さなバグと主観的に考えられる)拡張クラスのいくつかの特性を使用する必要がある場合は、 の代わりに、次の方法を使用することもできます.
2.フォルダを開く
CFileDialog ObjFile(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,
_T(" (*.png; *.jpg; *.jpeg; *.bmp)|*.png; *.jpg; *.jpeg; *.bmp| (*.*)|*.*||"), NULL);
if (IDOK == ObjFile.DoModal())
{
m_strImgPath = ObjFile.GetPathName();
}
インタフェースでこのボタンを使用すると、メインインタフェースのタイトルバーがグレーになります.つまり、フォーカスが失われます.解決策:
CFileDialog ObjFile(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,
NULL, theApp.GetMainWnd()->GetWindow (GW_HWNDPREV));
if (IDOK == ObjFile.DoModal())
{
...
SetFocus();
}
2.フォルダを開く
CString strDirPath;
BROWSEINFO stDirInfo;
::ZeroMemory(&stDirInfo, sizeof(stDirInfo));
stDirInfo.pidlRoot = 0;
stDirInfo.lpszTitle = _T(" :");
stDirInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_DONTGOBELOWDOMAIN;
stDirInfo.lpfn = nullptr;
LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&stDirInfo);
if (nullptr != lpidlBrowse)
{
if (::SHGetPathFromIDList(lpidlBrowse, strDirPath.GetBuffer(MAX_PATH)))
{
// strDirPath,
}
::CoTaskMemFree(lpidlBrowse);
}