【发布时间】:2020-09-02 11:24:28
【问题描述】:
在我的一张属性表上,我有两个 CMFCEditBrowseCtrl 对象。
其中一个是用于选择计算机上的本地文件夹。所以我在OnInitDialog中使用了如下样式:
m_BrowseLocalBackupFolder.EnableFolderBrowseButton(nullptr, BIF_NEWDIALOGSTYLE);
浏览文件夹时的弹出窗口如下所示:
我的其他控件使用我自己的类CRemoteFTPFolderSelect,它派生自CMFCEditBrowseCtrl。这是因为我需要通过 FTP 显示远程文件夹列表。我通过我的 C# DLL 包装器使用 FluentFTP 来实现这一点。我的OnBrowse 方法:
void CRemoteFTPFolderSelect::OnBrowse()
{
if (theApp.MSAToolsInterface().ConnectToFTP(m_strHostname, m_strUsername, m_strPassword))
{
CBrowseFolderFTP dlgBrowse(this);
CString strRemoteBackupFolder;
GetWindowText(strRemoteBackupFolder);
if (strRemoteBackupFolder != _T(""))
dlgBrowse.SetSelectedFolder(strRemoteBackupFolder);
if (dlgBrowse.DoModal() == IDOK)
{
dlgBrowse.GetSelectedFolder(strRemoteBackupFolder);
SetWindowText(strRemoteBackupFolder);
CMFCPropertyPage* pParent = (CMFCPropertyPage*)GetParent();
if (pParent)
{
CWnd* pWnd = pParent->GetDlgItem(IDC_BUTTON_APPLY);
if (pWnd != nullptr)
pWnd->EnableWindow(TRUE);
}
}
theApp.MSAToolsInterface().DisconnectFromFTP();
}
}
我不得不使用自己的对话资源,目前它看起来像这样:
目前我正在创建这样的图像列表:
SHGetFileInfo(
_T("Doesn't matter"),
FILE_ATTRIBUTE_DIRECTORY,
&sfi, sizeof sfi,
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
m_imgList.Add(sfi.hIcon);
SHGetFileInfo(
_T("Doesn't matter"),
FILE_ATTRIBUTE_DIRECTORY,
&sfi, sizeof sfi,
SHGFI_ICON | SHGFI_OPENICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
m_imgList.Add(sfi.hIcon);
m_treeFTP.SetImageList(&m_imgList, TVSIL_NORMAL );
是否可以获得类似于m_BrowseLocalBackupFolder.EnableFolderBrowseButton(nullptr, BIF_NEWDIALOGSTYLE) 浏览窗口用于 + / - 图像的图标?
【问题讨论】:
标签: c++ mfc modal-dialog