MFC連續處理圖像

問題背景:需要自動化的連續的處理500張圖,一個一個地處理顯然很幼稚,因此需要一個連續處理圖像的函數。

 CString m_strFileOut = _T("");  //初始化適應Unicode
 TCHAR szSelected[MAX_PATH];//用來存放文件夾路徑  
 BROWSEINFO bi;  
 LPITEMIDLIST pidl;  
 bi.hwndOwner = this->m_hWnd;  
 bi.pidlRoot = NULL;  
 bi.pszDisplayName = szSelected;  
 bi.lpszTitle = _T("選擇輸出文件路徑");  
 bi.ulFlags = BIF_RETURNONLYFSDIRS;  
 bi.lpfn = NULL;  
 bi.lParam = NULL;  
 bi.iImage = NULL;  
 if((pidl = SHBrowseForFolder(&bi)) != NULL)  
 {  
  if(SUCCEEDED(SHGetPathFromIDList(pidl, szSelected))) //得到文件夾的全路徑,不要的話,只得本文件夾名  
  {  
   m_strFileOut = szSelected;  	//獲得文件夾的全路徑
  }  
 }

執行完這段代碼後m_strFileOut就保存了文件夾路徑名。

/******************************************************************
 * 函數名:EnumFiles
 * 參數  :LPCTSTR lpPath 目標文件夾, LPCTSTR lpExt 要搜索的文件
          名,留空表示所有文件
 * 返回值:是否找到
 * 功能描述:示例:EnumFiles("C:\\windows\\system32", "*.dll");
******************************************************************
bool EnumFiles(LPCTSTR lpPath, LPCTSTR lpExt)
{
    char szFindCmd[MAX_PATH] = "";                                   
    WIN32_FIND_DATA FindFileData;

    HANDLE hFind;
    if (lpExt == NULL)
    {
        sprintf(szFindCmd, "%s\\*.*", lpPath);
    }
    else
    {
        sprintf(szFindCmd, "%s\\%s", lpPath, lpExt);
    }
 
    hFind = ::FindFirstFile(szFindCmd, &FindFileData);
    if(INVALID_HANDLE_VALUE == hFind)    
		return FALSE;
     
    while(TRUE)
    {
        if(! (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
        {   
            // 找到的是文件,而不是文件夾
            char szBuffer[MAX_PATH] = "";
            sprintf(szBuffer, "%s\\%s", lpPath, FindFileData.cFileName);
  
            // 找到的文件的路徑是szBuffer,在這裏加入你的圖像處理代碼
			CString str;
			str = szBuffer;

			m_MyDib.LoadFile(str);
		
        }
         
        if(!FindNextFile(hFind,&FindFileData))  
			break;
    }
    FindClose(hFind);
 
    return TRUE;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章