我在dll里做了一個對話框,里面嵌入了一個CMFCShellTreeCtrl。什么也沒做,然后使用這個對話框作為模態對話,但是
顯示如下:

這是exe呼叫的函式:
void OpenDlgSelectDir(const char* prjName, char* re)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
DlgSelectDir dlg;
if (IDOK == dlg.DoModal())
{
return;
}
}
這是dll的代碼:
#include <afxshelltreectrl.h>
BOOL DlgSelectDir::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加額外的初始化
auto pwnd = GetDlgItem(IDC_MFCSHELLTREE1);
CMFCShellTreeCtrl* tree = (CMFCShellTreeCtrl*)pwnd;
tree->SelectPath("");
return TRUE; // return TRUE unless you set the focus to a control
// 例外: OCX 屬性頁應回傳 FALSE
}
真的是見鬼了。。
手動點擊"此電腦"識訓去,再點擊"此電腦",就能正常顯示了!
不知道錯在什么地方呢?求大神們指點迷津!!!
uj5u.com熱心網友回復:
直接用 BrowseForFolder
BOOL CMFCDlgApp::InitInstance()
{
……
InitShellManager();
……
}
void CMFCDlgDlg::OnBnclickedButton1()
{
if(afxShellManager)
{
CString sOut;
afxShellManager->BrowseForFolder(sOut, this);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/20078.html
標籤:基礎類
上一篇:求助各位大佬
下一篇:怎么洗掉提交到本地倉庫的提交訊息
