摘要:(2)在VC平臺下創(chuàng)建名為PCA的基于對話框的MFC工程,添加一打開文件的按鈕控件,ID為ID_FILE_OPEN.篇幅所限只給出部分核心代碼,首先在Dlg類中添加3個私有成員變量用以保存Matlab讀取的數(shù)據(jù)及行列值,即:double*m_originData;longm_row,m_col;在響應(yīng)函數(shù)中添加如下代碼CFileDialogfileDlg(TRUE);fileDlg.m_ofn.lpstrTitle=“
(2)在VC平臺下創(chuàng)建名為PCA的基于對話框的MFC工程,添加一打開文件的按鈕控件,ID為ID_FILE_OPEN.篇幅所限只給出部分核心代碼,首先在Dlg類中添加3個私有成員變量用以保存Matlab讀取的數(shù)據(jù)及行列值,即:
double *m_originData; long m_row, m_col;
在響應(yīng)函數(shù)中添加如下代碼
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=“請選擇你的excel數(shù)據(jù)”;
fileDlg.m_ofn.lpstrFilter=“Text Files(*.xls)*.xlsAll Files(*.*)*.*”;
if(IDOK==fileDlg.DoModal() {
CString fileName; IFileOpenclass *pfile;
VARIANT filePath,output,rowOutput,colOutput;
//m文件的輸入?yún)?shù)
fileName = fileDlg.GetPathName();
//獲取文件路徑并存于fileName中
CoInitialize(NULL); //COM初始化
HRESULT hr = CoCreateInstance(CLSID_FileOpenclass,NULL,CLSCTX_ALL,IID_IFileOpenclass,(void**)&pfile);
//新建COM實例
VariantInit(&filePath); //VARIANT數(shù)據(jù)初始化
filePath.vt = VT_BSTR; //指定filePath變量類型
//將fileName中保存的指定文件路徑名保存至filePath參數(shù)中
filePath.bstrVal = fileName.AllocSysString();
pfile->CExcelRead(3,&output,&rowOutput, &colOutput,filePath);
m_row=(long) rowOutput.dblVal;
//取出行列值及錄入數(shù)據(jù)
m_col = (long) colOutput.dblVal;
m_originData = (double *)malloc(sizeof(double)*m_row*m_
col); memcpy(m_originData,output.parray->pvData,m_row*m_
col*sizeof(double));
//將matlab讀入數(shù)據(jù)保存到m_originData供后面程序使用
} 上述C++代碼中省略了異常處理和相關(guān)的內(nèi)存、COM釋放代碼,由于代碼比較簡單所以不做進一步解析。請注意,下面將省略COM初始化及實例化等相同代碼。[1] [2] [3] [4] [5]
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準!