windows开发杂记

一、判断文件或者文件夹是否存在。

if (!PathFileExists(csFilePath))
{::CreateDirectory(csFilePath, NULL);} 

二、打开windows类型对话框

static TCHAR strDirName[MAX_PATH];

BROWSEINFO bi;

CString szString = TEXT("选择一个文件夹");

bi.hwndOwner = ::GetFocus();

bi.pidlRoot = NULL;

bi.pszDisplayName = strDirName;

bi.lpszTitle = szString;

bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;

bi.lpfn = NULL;

bi.lParam = 0;

bi.iImage = 0;

LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi);

if(pItemIDList == NULL)

{

	return ;

}

::SHGetPathFromIDList(pItemIDList, strDirName);

三、遍历目录下的所有文件

CString csFolder = csGPSDataPath + _T("\\*.txt");

CFileFind finder;

BOOL bWorking = finder.FindFile(csFolder);

while (bWorking)

{

	bWorking = finder.FindNextFile();

	if (finder.IsDots())

	{

		continue;

	}

	CString strPath = finder.GetFileName();

	CString strFile = csGPSDataPath + _T("\\") + strPath;

	vecAllFilePath.push_back(strFile);

}

finder.Close();

四、打开windows上次打开的对话框

BOOL CTestDlg::GetOpenSaveMRU(LPCTSTR strExtName,char *strMRUPath)

{

	HKEY hKEY;

	const char *mru="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\";

	CString strmru(mru);

	strmru += strExtName;

	long lRet = RegOpenKeyEx(HKEY_CURRENT_USER,strmru,0,KEY_READ,&hKEY);



	if (lRet != ERROR_SUCCESS ) {

		return FALSE;

	}



	DWORD keytype1 = REG_SZ;

	DWORD dwInBytes = 256;

	BYTE pInBuf[256];

	lRet = RegQueryValueEx(hKEY,"MRUList",NULL,&keytype1,pInBuf,&dwInBytes);

	if (lRet != ERROR_SUCCESS ) {

		return FALSE;

	}



	dwInBytes = 256;

	char strLast[] = {pInBuf[0],0};

	lRet = RegQueryValueEx(hKEY,(LPTSTR)strLast,NULL,&keytype1,(LPBYTE)   strMRUPath,&dwInBytes);



	if (lRet != ERROR_SUCCESS) {

		return FALSE;

	}



	CString str1(strMRUPath);

	int idx=str1.ReverseFind('\\');

	strMRUPath[idx]=0;



	RegCloseKey(hKEY);

	return TRUE;

}

  

你可能感兴趣的:(windows)