我想要用MFCEditBrowseCtrl控制元件來得到檔案的路徑從而進行下面的步驟,在網上看到這樣一段代碼,我把它放在了void CDrawDialog::OnEnChangeMfceditbrowse1()里面,但是瀏覽視窗總會彈出來兩遍,我覺得是因為這個控制元件本身自帶了彈出的操作,在MSDN上也沒找到相關的代碼,跪求大神指點,感激不盡啊
CFileDialog FileDlg(TRUE);
if (IDOK == FileDlg.DoModal())
{
Path = FileDlg.GetPathName();
}
uj5u.com熱心網友回復:
// Create dialog to open multiple files.
CFileDialog dlg(TRUE, _T("txt"), _T("*.txt"), OFN_ALLOWMULTISELECT);
// Create buffer for file names.
const DWORD numberOfFileNames = 100;
const DWORD fileNameMaxLength = MAX_PATH + 1;
const DWORD bufferSize = (numberOfFileNames * fileNameMaxLength) + 1;
TCHAR* filenamesBuffer = new TCHAR[bufferSize];
// Initialize beginning and end of buffer.
filenamesBuffer[0] = NULL;
filenamesBuffer[bufferSize-1] = NULL;
// Attach buffer to OPENFILENAME member.
dlg.m_ofn.lpstrFile = filenamesBuffer;
dlg.m_ofn.nMaxFile = bufferSize;
// Create array for file names.
CString fileNameArray[numberOfFileNames];
if(dlg.DoModal() == IDOK)
{
// Retrieve file name(s).
POSITION fileNamesPosition = dlg.GetStartPosition();
int iCtr = 0;
while(fileNamesPosition != NULL)
{
fileNameArray[iCtr] = dlg.GetNextPathName(fileNamesPosition);
iCtr++;
}
}
// Release file names buffer.
delete[] filenamesBuffer;
uj5u.com熱心網友回復:
看起來好高端的樣子,果然是專業水準,但是我試了一下,那個瀏覽檔案對話框還是會彈出來兩次,而且感覺思路上跟我之前用的那幾句話沒有太大差別啊uj5u.com熱心網友回復:
To answer your "minimal sample" question:Use MFC App Wizard to generate Dialog app.
In resource editor, drag MFC EditBrowse Control onto the dialog.
Right-click that control, select Add Event Handler...; select EN_CHANGE in the Message type: list and (optionally) change the Function handler name:.
(Optionally) right-click on the control again and select Add Variable...; check Control variable checkbox if it was un-checked; type a Variable name:, for example m_browser.
This will add
DDX_Control(pDX, IDC_MFCEDITBROWSE1, m_browser);
to your void CMFCDlgDlg::DoDataExchange(CDataExchange* pDX),
ON_EN_CHANGE(IDC_MFCEDITBROWSE1, &CMFCDlgDlg::OnEnChangeMfceditbrowse1)
to the message map, and this method:
void CMFCDlgDlg::OnEnChangeMfceditbrowse1()
{
}
I have added this code to demo that it works:
void CMFCDlgDlg::OnEnChangeMfceditbrowse1()
{
CString str;
m_browser.GetWindowTextW(str);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/92583.html
標籤:基礎類
