c++ winapi 獲取當前程式/工程所在路徑

韭菜炒雞蛋發表於2016-01-12

http://blog.sina.com.cn/s/blog_6294abe701013ick.html


1.方法1

   char pBuf[MAX_PATH];                                               //存放路徑的變數

   GetCurrentDirectory(MAX_PATH,pBuf);                   //獲取程式的當前目錄

   strcat(pBuf,"//");

   strcat(pBuf,AfxGetApp()->m_pszExeName);   

   strcat(pBuf,".exe");                                                       //獲取程式的全檔名

---------------------------------------------------------------------------------------------------------------------------------------------

2.方法2

   //函式返回應用程式所在的路徑   

   CString    CClientApp::ReturnPath()   

   {   

   CString    sPath;   

   GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);   

   sPath.ReleaseBuffer    ();   

   int    nPos;   

   nPos=sPath.ReverseFind('//');   

   sPath=sPath.Left(nPos);   

   return    sPath;   

   }

TCHAR szFilePath[MAX_PATH + 1];
GetModuleFileName(NULL, szFilePath, MAX_PATH);
(_tcsrchr(szFilePath, _T('\\')))[1] = 0; //刪除檔名,只獲得路徑
CString str_url = szFilePath; //str_url 中儲存的是當前目錄
---------------------------------------------------------------------------------------------------------------------------------------------

3.方法3

CFileDialog dlg(TRUE)

 

CFileDialog dlg(TRUE);//<-這裡用TRUE與FALSE有什麼不同?

     // TRUE是“開啟”對話方塊
     // FALSE是“另存為”對話方塊
int ret=dlg.DoModal();
if(ret==IDOK)
{
CString pathname=dlg.GetPathName();  //得到檔案所在路徑+檔名
CString filename=dlg.GetFileName(); //得到檔名
char tbuf[120];
sprintf(tbuf,"The %s file in %s is saved!",filename,pathname);
AfxMessageBox(tbuf);

}
---------------------------------------------------------------------------------------------------------------------------------------------

1.GetCurrentDirectory ,由於開啟,儲存檔案對話方塊都會改變當前路徑,一般不建議使用這個
2.GetModuleFileName  標頭檔案 Header: Declared in Winbase.h; include Windows.h.

相關文章