// IniParseTestToolDlg.cpp : implementation file // #include "stdafx.h" #include "IniParseTestTool.h" #include "IniParseTestToolDlg.h" #include <vector> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif using namespace std; ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CIniParseTestToolDlg dialog CIniParseTestToolDlg::CIniParseTestToolDlg(CWnd* pParent /*=NULL*/) : CDialog(CIniParseTestToolDlg::IDD, pParent) { //{{AFX_DATA_INIT(CIniParseTestToolDlg) m_strContent = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_strDir = _T(""); m_strVerSer = _T(""); // m_strVerWid = _T(""); m_strDisWid = _T(""); m_strCarType = _T(""); m_strDate = _T(""); m_strVerSer = _T(""); m_strHight = _T("6"); m_strDisWid = _T("39"); m_wszString = new wchar_t[1]; m_bdefault = FALSE; m_strDirDefault = _T(""); memset(m_wszString,0,sizeof(m_wszString)); } void CIniParseTestToolDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_FILE_DIR, m_strDir); DDX_Text(pDX, IDC_EDIT_VER_SER, m_strVerSer); //DDX_Text(pDX, IDC_EDIT_VER_WID, m_strVerWid); DDX_Text(pDX, IDC_EDIT_DIS_WID, m_strDisWid); DDX_Text(pDX, IDC_EDIT_CAR_TYPE, m_strCarType); DDX_Text(pDX, IDC_EDIT_DATE, m_strDate); //{{AFX_DATA_MAP(CIniParseTestToolDlg) DDX_Control(pDX, IDC_LIST, m_List); DDX_Control(pDX, IDC_EDIT_VER_SER, m_edVerSer); DDX_Control(pDX, IDC_EDIT_FILE_DIR, m_edFileDir); DDX_Control(pDX, IDC_EDIT_DIS_WID, m_edDisWid); DDX_Control(pDX, IDC_EDIT_DATE, m_edDate); DDX_Control(pDX, IDC_EDIT_CAR_TYPE, m_edCarType); DDX_Control(pDX, IDC_BUTTON_Test, m_bnTest); DDX_Control(pDX, IDC_BUTTON_OK, m_bnOK); DDX_Text(pDX, IDC_EDIT_INI_CONTENT, m_strContent); DDX_Text(pDX, IDC_EDIT_DIS_WID2, m_strHight); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CIniParseTestToolDlg, CDialog) //{{AFX_MSG_MAP(CIniParseTestToolDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_OK, OnBUTTONOk) ON_BN_CLICKED(IDC_BUTTON_Test, OnBUTTONTest) ON_BN_CLICKED(IDC_BUTTON_REVIEW_CONTENT, OnButtonReviewContent) ON_BN_CLICKED(IDC_BUTTON_DISPLAY_CONTENT, OnButtonDisplayContent) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CIniParseTestToolDlg message handlers BOOL CIniParseTestToolDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CIniParseTestToolDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CIniParseTestToolDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CIniParseTestToolDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CIniParseTestToolDlg::OnBUTTONOk() { // TODO: Add your control notification handler code here //test "//n" LPITEMIDLIST root; if(m_bdefault == FALSE) { root =Dir2Pidl(""); } else { root =Dir2Pidl(m_strDirDefault); } CString sFolderPath; BROWSEINFO bi; char Buffer[MAX_PATH]; //讲Buffer变换为多字节! int wcsLenb = MultiByteToWideChar(CP_ACP, NULL, Buffer, strlen(Buffer) ,NULL, 0); wchar_t* wszStringb = new wchar_t[wcsLenb + 1]; ::MultiByteToWideChar(950, NULL, Buffer, strlen(Buffer), wszStringb, wcsLenb); wszStringb[wcsLenb] = '\0'; //m_strDeDisWid = wszStringb; //MessageBox(m_strDeDisWid); //comment by zhaolixin 2011-12-12 //初始化入口参数bi开始 bi.hwndOwner = NULL; bi.pidlRoot = root;//初始化制定的root目录很不容易, bi.pszDisplayName = wszStringb;//此参数如为NULL则不能显示对话框 bi.lpszTitle = _T("路径选择:"); //bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件 //bi.ulFlags = BIF_EDITBOX;//包括文件 bi.lpfn = NULL; bi.iImage=IDR_MAINFRAME; //初始化入口参数bi结束 LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框 if(pIDList) { SHGetPathFromIDList(pIDList, wszStringb); //取得文件夹路径到Buffer里 sFolderPath = wszStringb;//将路径保存在一个CString对象里 } LPMALLOC lpMalloc; if(FAILED(SHGetMalloc(&lpMalloc))) return; //释放内存 lpMalloc->Free(pIDList); lpMalloc->Release(); //m_imageroad = sFolderPath; m_strDir = sFolderPath; UpdateData(FALSE); m_strDirDefault = m_strDir; m_bdefault = TRUE; m_strDirDefault = m_strDirDefault.Mid(0,m_strDirDefault.ReverseFind('\\')); m_strDirDefault = m_strDirDefault.Mid(0,m_strDirDefault.ReverseFind('\\')); //Test Dir end here CString strDir_prefix(""); strDir_prefix.TrimLeft(); for(int str = 0 ; str <=3; str++) { strDir_prefix += m_strDir.Mid ((m_strDir.ReverseFind('_')-3 + str),1); } if(strDir_prefix != _T("INI_")) { MessageBox(_T("请选择正确的INI文件!")); return; } //UpdateData(TRUE); CString strDir_suffix(""); strDir_suffix = m_strDir.Mid (m_strDir.ReverseFind('_')+1,m_strDir.GetLength()); CString strContent(""); char szTemp[1500]; memset(szTemp,0,sizeof(szTemp)); //读文件 CFile file; try { if(!file.Open(m_strDir,CFile::modeRead)) { CString streorr("请正确选择待测INI文件路径"); MessageBox(streorr); return; } file.Read(szTemp,sizeof(szTemp)); //转换begin wchar_t* wszString; if(strDir_suffix == "HK") { int wcsLen = MultiByteToWideChar(950, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(950, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if((strDir_suffix == "CN") ||(strDir_suffix == "EN")) { int wcsLen = MultiByteToWideChar(CP_ACP, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(936, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if((strDir_suffix == "PL") ||(strDir_suffix == "HU") ||(strDir_suffix == "RO") ||(strDir_suffix == "CS") ) { int wcsLen = MultiByteToWideChar(1250, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1250, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if((strDir_suffix == "RU") ||(strDir_suffix == "SR") ) { int wcsLen = MultiByteToWideChar(1251, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1251, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if((strDir_suffix == "ES") ||(strDir_suffix == "DE") ||(strDir_suffix == "PT") ||(strDir_suffix == "FR") ||(strDir_suffix == "NL") ||(strDir_suffix == "DA") ||(strDir_suffix == "FI") ||(strDir_suffix == "SV") ||(strDir_suffix == "IT") ) { int wcsLen = MultiByteToWideChar(1252, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1252, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if(strDir_suffix == "GR") { int wcsLen = MultiByteToWideChar(1253, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1253, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if(strDir_suffix == "TR") { int wcsLen = MultiByteToWideChar(1254, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1254, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if((strDir_suffix == "AR") ||(strDir_suffix == "FA") ) { int wcsLen = MultiByteToWideChar(1256, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(1256, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if(strDir_suffix == "JP") { int wcsLen = MultiByteToWideChar(20932, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(20932, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } if(strDir_suffix == "KO") { int wcsLen = MultiByteToWideChar(20949, NULL, szTemp, strlen(szTemp) ,NULL, 0); wszString = new wchar_t[wcsLen + 1]; ::MultiByteToWideChar(20949, NULL, szTemp, strlen(szTemp), wszString, wcsLen); wszString[wcsLen] = '\0'; } // wszString[wcsLen] = '\0'; // ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK); file.Close(); m_strContent=wszString; //m_strContent=szTemp; //不转换依然是乱码 CString str1(wszString); int iLenth = str1.GetLength(); int ipos =str1.Find(_T('.')); //取版本 CString strVer(""); for(int t =0;t<=5;t++) { strVer += str1.Mid( ipos +(t-3),1); } m_strDeVerSer = strVer; // MessageBox(strVer); //comment by zhaolixin 2011-12-12 //取车型 CString strCarType(""); for(int m =0; m < ipos - 3; m++ ) { strCarType += str1.Mid(m,1); } m_strDeCarType = strCarType; // MessageBox(strCarType);//comment by zhaolixin 2011-12-12 //取年限 CString strDate(""); CString strtrip(""); for(int k=0;k<=iLenth - ipos-3;k++) { strtrip += str1.Mid((ipos+k+3),1); } //MessageBox(strtrip); for(int d=0 ;d <4;d++ ) { strDate += strtrip.Mid(strtrip.Find('2')+d,1); } m_strDeDate = strDate; //MessageBox(strDate); //comment by zhaolixin 2011-12-12 //取每行最长字节数 vector <int> vec; int iMax = 0; int itemp = 1; int iLen = 0; CString strWid(""); char *pCount=szTemp; szTemp[strlen(szTemp)] ='%'; szTemp[strlen(szTemp) + 1] ='#'; while(*pCount != '#') { if(('\n' == *pCount) ||('%' == *pCount)) { vec.push_back(itemp-2);//为什么是-2,通过调试发现换行符占2个字节因此我们要减去! itemp = 0; } //只有一行 或者为最后一行 pCount++; itemp++; } //取VEC中最大的 iMax = vec[0]; for(int q =0 ; q < vec.size(); q++) { int item = vec[q]; if(item > iMax) { iMax = item; } } //将整形转化为字符型 char * p = new char[32]; memset(p,0,32); sprintf(p,"%d",iMax); //将字符转换宽字符 int wcsLeng = MultiByteToWideChar(CP_ACP, NULL, p, strlen(p) ,NULL, 0); wchar_t* wszStringt = new wchar_t[wcsLeng + 1]; ::MultiByteToWideChar(950, NULL, p, strlen(p), wszStringt, wcsLeng); wszStringt[wcsLeng] = '\0'; m_strDeDisWid = wszStringt; //MessageBox(m_strDeDisWid); //comment by zhaolixin 2011-12-12 delete p; delete wszStringt; delete wszStringb; delete wszString ; //取高度 vector <int> vecH; CString strlinesuffixH("%#"); m_strContent.TrimLeft(); m_strContent.TrimRight(); strlinesuffixH = m_strContent +strlinesuffixH; int iMaxH = 0; int itempH = 0; int iLenH = 0; wchar_t *pCountH = strlinesuffixH.GetBuffer(strlinesuffixH.GetLength()); while(*pCountH != '#') { if(('\n' == *pCountH) ||('%' == *pCountH)) { vecH.push_back(itempH); itempH = 0; } //只有一行 或者为最后一行 pCountH++; itempH++; } //取VEC中最大的 iMaxH = vecH[0]; for(int qH =0 ; qH < vecH.size(); qH++) { int itemH = vecH[qH]; if(itemH > iMaxH) { iMaxH = itemH; } int iHightH = 0; if(qH > 0) { iHightH = qH + 1; } char * pHightH = new char[16]; memset(pHightH,0,16); sprintf(pHightH,"%d",iHightH); m_strDeHight = pHightH; delete pHightH; } } catch(CFileException *e) { CString str("打开文件异常!"); // str.Format("the reseason of reading data:%d",e->m_cause);// modify by zhaolixin 2011-12-7 MessageBox(str); file.Abort(); e->Delete(); } } //获取文件夹浏览根目录LPITEMIDLIST LPITEMIDLIST CIniParseTestToolDlg::Dir2Pidl(CString str) { HRESULT hres; IShellLink *psl; ITEMIDLIST *pidl; IPersistFile *ppf; CoInitialize(NULL); //这个函数先初始化COM库,并把当前线程设为单线程模式(single-thread apartment(STA)),以便后面使用COM库函数 hres = CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID*)&psl); //获得IShellLink接口的指针,放在psl中 if(SUCCEEDED(hres)) { psl->SetPath(str); // 设置目标文件 psl->GetIDList(&pidl); // 获得目标文件的ITEMIDLIST hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); // 获得IPersistFile接口的指针,放在ppf中 if (SUCCEEDED(hres)) { WCHAR wsz[MAX_PATH]; // 下面三行代码完成字符串转为Unicode #ifdef _UNICODE wcscpy(wsz,str); #else MultiByteToWideChar(CP_ACP,0,str,-1,wsz,MAX_PATH);// 把字符串转为Unicode #endif hres = ppf->Load(wsz,STGM_READ);// Load the shortcut. if(SUCCEEDED(hres)) { psl->GetIDList(&pidl); // 获得快捷方式的ITEMIDLIST } ppf->Release(); } psl->Release(); } CoUninitialize(); return pidl; } void CIniParseTestToolDlg::OnBUTTONTest() { // TODO: Add your control notification handler code here UpdateData(TRUE); if((m_strVerSer == "" ||m_strDisWid == "" ||m_strCarType == "" ||m_strDate == "") || (m_strDeVerSer == "" ||m_strDeDisWid == "" ||m_strDeCarType == "" ||m_strDeDate =="")) { CString str("请确认已选Ini文件\n并完整填写待测信息"); MessageBox(str); return ; } m_strCarType.TrimLeft(); m_strCarType.TrimRight(); m_strDeCarType.TrimLeft(); m_strDeCarType.TrimRight(); CString strsplit("--------------------------------------------------"); m_List.AddString(strsplit); if(m_strCarType == m_strDeCarType) { CString strInfo("Info:"); CString strLog(""); strLog = strInfo + "The expect " + m_strCarType +" equal real " + m_strDeCarType; m_List.AddString(strLog); } else { CString strEorror("Error!"); CString strLog(""); strLog = strEorror + "The expect " + m_strCarType +" not equal real " + m_strDeCarType; m_List.AddString(strLog); } m_strVerSer.TrimLeft(); m_strVerSer.TrimRight(); m_strDeVerSer.TrimLeft(); m_strDeVerSer.TrimRight(); if(m_strVerSer == m_strDeVerSer) { CString strInfo("Info:"); CString strLog(""); strLog = strInfo + "The expect " + m_strVerSer +" equal real " + m_strDeVerSer; m_List.AddString(strLog); } else { CString strEorror("Error!"); CString strLog(""); strLog = strEorror + "The expect " + m_strVerSer +" not equal real " + m_strDeVerSer; m_List.AddString(strLog); } m_strDate.TrimLeft(); m_strDate.TrimRight(); m_strDeDate.TrimLeft(); m_strDeDate.TrimRight(); if(m_strDate == m_strDeDate) { CString strInfo("Info:"); CString strLog(""); strLog = strInfo + "The expect " + m_strDate +" equal real " + m_strDeDate; m_List.AddString(strLog); } else { BOOL bdate = IsNumber(); CString strEorror("Error!"); CString strLog(""); if(bdate) { strLog = strEorror + "The expect " + m_strDate +" not equal real " + m_strDeDate; m_List.AddString(strLog); } else { strLog = strEorror +" There is no validate "; m_List.AddString(strLog); } } m_strDisWid.TrimLeft(); m_strDisWid.TrimRight(); m_strDeDisWid.TrimLeft(); m_strDeDisWid.TrimRight(); if(m_strDisWid >= m_strDeDisWid) { CString strInfo("Info:"); CString strLog(""); strLog = strInfo + "The expect " + m_strDisWid +" include the real width " + m_strDeDisWid + " domain"; m_List.AddString(strLog); } else { CString strEorror("Error!"); CString strLog(""); strLog = strEorror + "The expect " + m_strDisWid +" not include the real width " + m_strDeDisWid + " domain"; m_List.AddString(strLog); } if(m_strHight >= m_strDeHight) { CString strInfo("Info:"); CString strLog(""); strLog = strInfo + "The expect " + m_strHight +" include the real Hight " + m_strDeHight + " domain"; m_List.AddString(strLog); } else { CString strEorror("Error!"); CString strLog(""); strLog = strEorror + "The expect " + m_strHight +" not include the real Hight " + m_strDeHight + " domain"; m_List.AddString(strLog); } } void CIniParseTestToolDlg::OnButtonReviewContent() { // TODO: Add your control notification handler code here if(m_strContent != "") { MessageBox(m_strContent); } else { CString str("无文件内容,请正确配置!"); MessageBox(str); } } void CIniParseTestToolDlg::OnButtonDisplayContent() { // TODO: Add your control notification handler code here if(m_strContent !="") { UpdateData(FALSE); } else { CString str("无文件内容,请正确配置!"); MessageBox(str); } } BOOL CIniParseTestToolDlg::IsNumber() { char * p = (char *)m_strDate.GetBuffer(4); int n=m_strDate.GetLength(); for(int i=0;i<n;i++) if (p[i]<'0'||p[i]>'9') return FALSE; return TRUE; }
// IniParseTestToolDlg.h : header file // #if !defined(AFX_INIPARSETESTTOOLDLG_H__B884F3C9_BF7C_4731_B86B_11DFA1B46C0E__INCLUDED_) #define AFX_INIPARSETESTTOOLDLG_H__B884F3C9_BF7C_4731_B86B_11DFA1B46C0E__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CIniParseTestToolDlg dialog class CIniParseTestToolDlg : public CDialog { // Construction public: CIniParseTestToolDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CIniParseTestToolDlg) enum { IDD = IDD_INIPARSETESTTOOL_DIALOG }; CListBox m_List; CEdit m_edVerSer; CEdit m_edFileDir; CEdit m_edDisWid; CEdit m_edDate; CEdit m_edCarType; CButton m_bnTest; CButton m_bnOK; CString m_strContent; CString m_strHight; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CIniParseTestToolDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CIniParseTestToolDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnBUTTONOk(); afx_msg void OnBUTTONTest(); afx_msg void OnButtonReviewContent(); afx_msg void OnButtonDisplayContent(); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: void ParseContent(); CString m_strDir; //预期值 CString m_strVerSer; //CString m_strVerWid; CString m_strDisWid; CString m_strCarType; CString m_strDate; // CString m_strContent; CString m_strDeVerSer;//实际值 CString m_strDeVerWid; CString m_strDeDisWid; CString m_strDeCarType; CString m_strDeDate; wchar_t * m_wszString; CButton m_BnOK; CButton m_BnTest; CString m_imageroad; public: CString m_strDeHight; public: BOOL IsNumber(); CString m_strDirDefault; BOOL m_bdefault; LPITEMIDLIST Dir2Pidl(CString str); }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_INIPARSETESTTOOLDLG_H__B884F3C9_BF7C_4731_B86B_11DFA1B46C0E__INCLUDED_)