• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 131, comments - 12, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            http://hi.baidu.com/xiao%BF%D5%BF%D5/blog/item/3c418716a6cadf12962b4344.html

            CFileDialog打開當(dāng)前路徑

            TCHAR Buffer[size];

            GetCurrentDirectory(size, Buffer);

            CFileDialog dlg(true,"*BIN",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "二進(jìn)制文件(*.BIN)|*.bin|All Files (*.*)|*.*|",NULL); 
            dlg.m_ofn.lpstrInitialDir=Buffer;

            if(dlg.DoModal())

            {

            //your code;

            }

             

            ========================

            http://hi.baidu.com/g168999/blog/item/9ef3ab517977f1571038c2ba.html

            VC獲取當(dāng)前程序文件的路徑,文件名以及路徑2種方法對(duì)比建議
            2010-01-01 13:49

            1.方法1

               char pBuf[MAX_PATH];                                               //存放路徑的變量
               GetCurrentDirectory(MAX_PATH,pBuf);                   //獲取程序的當(dāng)前目錄
               strcat(pBuf,"http://");
               strcat(pBuf,AfxGetApp()->m_pszExeName);   
               strcat(pBuf,".exe");                                                       //獲取程序的全文件名

            2.方法2

               //函數(shù)返回應(yīng)用程序所在的路徑  

               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;   
               }

            3.對(duì)比及建議

            方法1獲取的是程序的工作路徑,如某個(gè)程序安裝在C,D盤或者其它任何,當(dāng)你從[開始]-[程序]后的菜單中打開該文件,此時(shí)獲取的是用戶工作路徑,如:C:/Documents and Settings/[計(jì)算機(jī)當(dāng)前用戶名]/....../....
            如果你想通過(guò)這個(gè)路徑來(lái)加載你放在程序目錄下的文件,必定出錯(cuò)。通常這種情況在你編譯調(diào)試程序時(shí)是不會(huì)出錯(cuò)的,你跟蹤得到的絕對(duì)路徑,但打包安裝后一定出問(wèn)題。

            方法2獲取的是程序的絕對(duì)路徑,用這個(gè)路徑加載同目錄下的文件是不會(huì)有問(wèn)題的。

            如果你要確保成功加載文件,建議使用方法2!!!!!!


            新建目錄CreateDirectory

            第一個(gè)參數(shù)值為文件夾名稱,第二個(gè)參數(shù)值為安全屬性,一般設(shè)置為NULL即可。如果正確創(chuàng)建,返回值為1,如果沒(méi)有正常創(chuàng)建文件夾,則返回0。

              特別的:該函數(shù)每次調(diào)用時(shí)都只能創(chuàng)建一級(jí)文件夾,即文件夾中不能再包含子文件夾。
              當(dāng)希望創(chuàng)建含有子文件夾的文件夾時(shí),可以先使用該函數(shù)創(chuàng)建一級(jí)文件夾,然后再使用該函數(shù)在一級(jí)文件夾下創(chuàng)建子文件夾。如:
              希望創(chuàng)建:d:\\TEST\\temp,
              則:CString str = “d:\\TEST”;
              CreateDirectory(str, NULL);
              str = str + \\temp;
              CreateDirectory(str, NULL);

            1. CString szDir;  
            2. szDir="C:\\temp";//臨時(shí)文件夾  
            3. DWORD dwAttr=GetFileAttributes(szDir);  
            4. if(dwAttr==0xFFFFFFFF)  //臨時(shí)文件夾不存在則創(chuàng)建  
            5. {  
            6.     CreateDirectory(szDir,NULL);  
            7. )  
            8. //.........chuli  
            9. RemoveDirectory(szDir);//刪除文件夾  

            得到運(yùn)行程序所在路徑全路徑(exe或其他模塊文件名稱,程序目錄):GetModuleFileName。

            函數(shù)原型:

              DWORD GetModuleFileName(
              HMODULE hModule,
              LPTSTR lpFilename,
              DWORD nSize
              );
              函數(shù)參數(shù)說(shuō)明:
              hModule HMODULE 裝載一個(gè)程序?qū)嵗木浔H绻搮?shù)為NULL,該函數(shù)返回該當(dāng)前應(yīng)用程序全路徑。
              lpFileName LPTSTR 是你存放返回的名字的內(nèi)存塊的指針,是一個(gè)輸出參數(shù)
              nSize DWORD ,裝載到緩沖區(qū)lpFileName的最大值
              函數(shù)返回值:
              如果返回為成功,將在lpFileName的緩沖區(qū)當(dāng)中返回相應(yīng)模塊的路徑,如果所設(shè)的nSize過(guò)小,那么返回僅按所設(shè)置緩沖區(qū)大小返回相應(yīng)字符串內(nèi)容。
              如果函數(shù)失敗,返回值將為0,利用GetLastError可獲得異常代碼。
              需要的頭文件為:

              windows.h


              
            1. #include <windows.h>  
            2.   #include <stdio.h>  
            3.   BOOL CreateSampleService()  
            4.   {  
            5.   TCHAR szPath[MAX_PATH];  
            6.   if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )  
            7.   {  
            8.   printf("GetModuleFileName failed (%d)\n", GetLastError());  
            9.   return FALSE;  
            10.   }  
            11.   return TRUE;  
            12.   }  
            1. <h1><a name="t2"></a>獲取程序當(dāng)前路徑GetCurrentDirectory(當(dāng)前進(jìn)程的當(dāng)前路徑,即程序?qū)嵗夸洠瑫?huì)隨著操作的改變而改變)</h1>DWORD GetCurrentDirectory(  
            2.   DWORD nBufferLength, // size of directory buffer  
            3.   LPTSTR lpBuffer // directory buffer  
            4.   );  

              函數(shù)功能
              獲取當(dāng)前進(jìn)程的當(dāng)前目錄
              參數(shù)說(shuō)明
              參數(shù) 類型及說(shuō)明
              nBufferLength 緩沖區(qū)的長(zhǎng)度
              lpBuffer 指定一個(gè)預(yù)定義字串,用于裝載當(dāng)前目錄
              返回值
              調(diào)用成功 返回裝載到lpBuffer的字節(jié)數(shù)。
              如nBufferLength的長(zhǎng)度不夠,不足以容納目錄,則返回值是必要的緩沖區(qū)長(zhǎng)度(要求至少這個(gè)長(zhǎng)度),其中包括空中止字符。零表示失敗。使用GetLastError函數(shù)可獲得錯(cuò)誤信息

            CFileDialog設(shè)置打開默認(rèn)路徑dlg.m_ofn.lpstrInitialDir="D:\\Program File";

            謹(jǐn)記:CFileDialog會(huì)改變程序的默認(rèn)執(zhí)行路徑,比較穩(wěn)妥的辦法還是絕對(duì)路徑來(lái)訪問(wèn)文件比較好。在程序剛一跑起來(lái)的時(shí)候,先用GetCurrentDirectory()或是GetModuleFileName()獲得當(dāng)前可執(zhí)行文件所在的路徑,并保存起來(lái)。以后即使是用CFileDialog改變了當(dāng)前的路徑,也能很容易地找回來(lái)。

            1. CFileDialog Dlg(TRUE,NULL,NULL,0,"ASCII Data Files(*.asc)|*.asc|所有文件 (*.*)|*.*||");  
            2.     char pBuf[MAX_PATH];                                 //存放路徑的變量         
            3.       
            4.     GetCurrentDirectory(MAX_PATH,pBuf);                   //獲取程序的當(dāng)前目錄  
            5.       
            6.     strcat(pBuf,"\\");  
            7.       
            8.     CString strtemp=pBuf;  
            9.       
            10.   
            11.     Dlg.m_ofn.lpstrInitialDir=pBuf; 


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲国产精品综合久久网络 | 四虎久久影院| 久久人人青草97香蕉| 狠狠色婷婷久久综合频道日韩| 日韩人妻无码精品久久久不卡| 久久久久久午夜成人影院| 伊人色综合久久| 久久人人爽人人爽人人av东京热 | 久久精品青青草原伊人| 香蕉久久av一区二区三区| 国产成人无码精品久久久久免费| 伊人久久大香线蕉无码麻豆| 国产精品久久永久免费| 久久精品国产AV一区二区三区| 97久久久久人妻精品专区 | 国产伊人久久| 久久久久久午夜成人影院| 亚洲国产成人精品无码久久久久久综合| 噜噜噜色噜噜噜久久| 狠狠色丁香婷婷久久综合不卡| 久久久久久久免费视频| 国产精品永久久久久久久久久| 久久九九精品99国产精品| 精品久久久久久久久免费影院| 亚洲午夜久久影院| 国产精品久久久久久吹潮| 久久午夜无码鲁丝片秋霞| 久久久久久亚洲精品无码| 日本精品久久久久中文字幕8| 久久水蜜桃亚洲av无码精品麻豆 | 成人综合久久精品色婷婷| 精品久久久久久久久久中文字幕| 国产精品久久久久jk制服| 欧美喷潮久久久XXXXx| 97久久国产露脸精品国产| 性做久久久久久久久浪潮| 青青草原综合久久大伊人导航| 国内精品免费久久影院| 国产精品欧美久久久久天天影视| 亚洲综合精品香蕉久久网97| 国产高清国内精品福利99久久|