选择文件弹框置顶

//打开文件夹对话框的回调函数
int CALLBACK OpenFolderProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if (uMsg == BFFM_INITIALIZED)
{
//输出选择的文件夹
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
}
return 0;
}

void CFileRenameDlg::OnBnClickedBtOpenfoldpath()
{
// TODO: 在此添加控件通知处理程序代码
HMODULE module = GetModuleHandle(0);
TCHAR pFileName[MAX_PATH];
GetModuleFileNameW(module, pFileName, MAX_PATH);
std::string workPath = CT2A(pFileName);
size_t position = workPath.find_last_of("\");//find last
memset(pFileName, 0x00, strlen(CT2A(pFileName)));
memcpy(pFileName, workPath.c_str(), position);

TCHAR szFolderPath[MAX_PATH] = { 0 };
BROWSEINFO sInfo;
::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
sInfo.pidlRoot = 0;
sInfo.lpszTitle = _T("请选择文件夹路径:");
sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_EDITBOX;
//sInfo.lpfn = NULL;
sInfo.lParam = (LPARAM)(TCHAR*)pFileName;
sInfo.lpfn = OpenFolderProc;

// 显示文件夹选择对话框
LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);
if (lpidlBrowse != NULL)
{
// 取得文件夹名
if (::SHGetPathFromIDList(lpidlBrowse, szFolderPath))
{
//strFolderPath = CT2A(szFolderPath);
}
}
if (lpidlBrowse != NULL)
{
::CoTaskMemFree(lpidlBrowse);
}

m_editFoldPath.SetWindowText(szFolderPath);

m_List.DeleteAllItems();
getFileNames();
}

原文地址:https://www.cnblogs.com/Pond-ZZC/p/13038812.html