亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

VC小技巧匯總之5則實用小技巧

2020-02-24 14:29:00
字體:
來源:轉載
供稿:網友

VC小技巧的功能是很實用的,這對于程序員在開發的時候有一定的參考價值,本文是武林技術頻道小編為大家介紹的VC小技巧匯總之5則實用小技巧,希望對你學習這個方面知識有幫助!

1.如何獲取程序所在的路徑

也就是獲取你這個程序本身所在的路徑。
在應用程序類CxxApp的頭文件中定義一個變量CString m_exePath;用來放置程序的路徑名,在應用程序類CxxApp的InitInstance()函數中加入如下語句:

TCHAR m_Path[MAX_PATH];GetModuleFileName( NULL, m_Path, MAX_PATH ); //獲取程序路徑(包括程序名)int i = 0, j;while( m_Path[i]!=0 ){  if( m_Path[i]=='/' )    j = i;  i++;}m_Path[j+1] = '';m_exePath.Format( "%s", m_Path );  //分離路徑名(去掉程序名)

這段程序執行后,字符串變量m_exePath中放置的就是程序所在路徑,其中不包括程序名。
獲取程序的位置有什么用呢?

(1)打開與應用程序在一起放置的數據文件:
如果你運行程序過程中使用過打開文件對話框打開過其它路徑下的文件,這時系統的默認路徑就發生了改變,有可能使你原定的數據文件打不開了,如果采用以下方法就可以沒問題了:

CFile file;file.Open( m_exePath+"數據文件名", CFile::modeRead );

(2)放置程序運行中的臨時文件:
同樣,當系統的默認路徑發生改變后,程序中生成的臨時文件就會放得到處都是,成了一個個垃圾文件,采用以下方法可使臨時文件只放在程序所在路徑下:

CFile file;file.Open( m_exePath+"臨時文件名", CFile::modeCreate | CFile::modeWrite );……

程序結束時,用下面的方法刪除臨時文件:

CFile::Remove( m_exePath+"臨時文件名" );

2.如何在你的程序中執行其它程序

在自己的程序中調用其它程序的方法有好幾種,這里我介紹我用過的兩種:
(1)WinExec()函數:
一般用法:

WinExec(m_PathName,SW_SHOWNORMAL);

m_PathName為執行程序的路徑名,必須為可執行文件。
如:

WinExec("C:/Program Files/Internet Explorer/iexplore.exe",SW_SHOWNORMAL);//為打開IE瀏覽器

(2)ShellExecute()函數:
一般用法:

ShellExecute(NULL,NULL,m_PathName,NULL,_T("c:/temp"),SW_SHOWNORMAL);

m_PathName為打開的程序路徑名;
_T("c:/temp")為工作目錄;
與WinExec()不同的是ShellExecute()函數也可以打開非可執行文件,比如你指定的文件為.txt,結果會打開記事本裝入該文件。我用這種方法調用自己制作的幫助文件(.chm)效果很好。

3.如果不使用串行化,如何在程序結束時保存文件?

在文檔-視圖結構中,用串行化自動保存文件在各種VC書上都有介紹?,F在的問題是我不使用串行化,而是自己動手保存,當點擊窗口的關閉按鈕時,如何提示并保存文檔。
用ClassWizard在文檔類(CxxDoc)中添加函數CanCloseFrame(),再在其中加入保存文件的語句就可以了。
例:

//退出程序BOOL CEditDoc::CanCloseFrame(CFrameWnd* pFrame) {  CFile file;  if(b_Flag)  //b_Flag為文檔修改標志,在修改文檔時將其置為True  {    int t;    t=::MessageBox(NULL,"文字已經改變,要存盤嗎?","警告",      MB_YESNOCANCEL | MB_ICONWARNING);  //彈出提示對話框    if(t==0 || t==IDCANCEL)      return false;    if(t==IDYES)    {      CString sFilter="Text File(*.txt)|*.txt||";      CFileDialog m_Dlg(FALSE,"txt",NULL,OFN_HIDEREADONLY |         OFN_OVERWRITEPROMPT,(LPCTSTR)sFilter,NULL); //定制文件對話框      int k=m_Dlg.DoModal(); //彈出文件對話框      if(k==IDCANCEL || k==0)        return false;      m_PathName=m_Dlg.GetPathName(); //獲取選擇的文件路徑名      file.Open(m_PathName,CFile::modeCreate | CFile::modeWrite);      file.Write(m_Text,m_TextLen); //數據寫入文件      file.Close();    }  }  return CDocument::CanCloseFrame(pFrame);}

這樣當你單擊窗口上的關閉按鈕時,如果數據已修改了,就會彈出一個提示保存數據的對話框,提示你保存數據。
程序中的b_Flag是數據修改標志,應該在修改數據時進行設置,m_Text是準備保存的數據,放在文檔內。

4.POSITION怎么用?

POSITION類型數據用于表征各種列表中元素的位置,它類似于數組的下標,但又有所不同。主要區別是:
我們不能訪問POSITION型數據的值,也不能對POSITION數據型數據進行加減、比較等運算。
用POSITION型數據訪問列表時,都是采用迭代法,一般格式為:

POSITION pos;    //定義pos型變量pos = GetHeadPosition();  //獲取列表起始元素位置while( pos ){  x = GetNext(pos);  //獲取pos處的列表值,同時修改pos為下一個元素位置}

GetNext()就是一種迭代,其格式為:

TYPE GetNext(POSITION& rPosition);

首先,它返回當前pos位置處的元素;再就是把pos值修改為下一個元素位置。這樣循環時,可依次取得列表中各元素的值;當到達列表尾時,pos為NULL,循環結束。
所以使用POSITION型數據時,你不要試圖用加減等操作去修改它,只能用GetNext()(向后迭代)或GetPrev()(向前迭代)反復迭代來修改它的值。
如果你想直接到達指定值,還可以用Find()函數或FindIndex()函數獲得指定值的POSITION值。

POSITION Find(TYPE Value);//用于在列表中查找值為Value的元素的POSITION值;POSITION FindIndex(int nIndex);//用于獲取列表中第nIndex個元素的POSITION值,nIndex從0開始。

如:

pos = FindIndex(5);  //求列表中第5個元素的位置x = GetNext(pos);   //讀取元素的值

總之,POSITION類型在多種涉及列表的類中提供,不同的類提供的函數有所不同,但用法都是類似的。

5.如何從完整的文件路徑中分離文件名和路徑名?

從路徑中分離文件名:

CString GetFileName(CString pathname) {   for( int i=pathname.GetLength()-1; i>=0; i-- )   {     if( pathname[i]=='/' )       break;   }   return pathname.Mid( i+1 ); }

從路徑中分離路徑名(去除文件名):

CString GetPath(CString pathname) {   int i = 0, j;   while( i<pathname.GetLength() )   {     if( pathname[i]=='/' )       j = i;     i++;   }   return pathname.Left( j+1 ); }

?以上就是VC小技巧匯總之5則實用小技巧的相關介紹,更多的實用小技巧盡在武林技術頻道,相信我們的信息對你是有用的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品手机在线| 色偷偷888欧美精品久久久| 国内精品久久久久伊人av| 亚洲女人天堂成人av在线| 亚洲欧美日韩中文在线| 日韩av在线天堂网| 日韩成人高清在线| 高跟丝袜一区二区三区| 91视频-88av| 亚洲曰本av电影| 国产在线视频不卡| 97在线观看视频| 隔壁老王国产在线精品| 国产精品主播视频| 国产精品香蕉国产| 国产精品直播网红| 98视频在线噜噜噜国产| 欧美成人精品在线视频| 日韩精品视频中文在线观看| 国产精品美女视频网站| 国产丝袜精品视频| 亚洲国产精品成人av| 国产成人aa精品一区在线播放| 亚洲iv一区二区三区| 国产一区二区三区直播精品电影| 亚州欧美日韩中文视频| 欧美性猛交xxxx免费看| 国内久久久精品| 成人黄色免费看| 麻豆国产精品va在线观看不卡| 国产精品一二三视频| 亚洲欧美第一页| 日韩在线观看免费网站| 伦理中文字幕亚洲| 国产在线观看一区二区三区| 精品国内亚洲在观看18黄| 成人网页在线免费观看| 亚洲电影在线观看| 久久69精品久久久久久国产越南| 最近2019好看的中文字幕免费| 麻豆国产精品va在线观看不卡| 久久久电影免费观看完整版| 欧美怡红院视频一区二区三区| 国产91九色视频| 欧美激情乱人伦| 欧洲s码亚洲m码精品一区| 日韩有码在线电影| 黑人巨大精品欧美一区二区免费| 国外成人免费在线播放| 精品成人69xx.xyz| 国产日韩av在线播放| 欧美成人精品一区二区三区| 国产成人福利网站| 久久久久久69| 亚洲精品视频在线观看视频| 5252色成人免费视频| 福利视频第一区| 欧美成人激情视频免费观看| 这里只有视频精品| 亚洲xxxx在线| 国产精品视频网址| 美女av一区二区| 欧美制服第一页| 国产成人在线播放| 在线丨暗呦小u女国产精品| 成人激情视频免费在线| 欧美日韩国产成人在线| 成人av色在线观看| 丝袜美腿精品国产二区| 欧美电影在线免费观看网站| 欧美高清第一页| 欧美日韩人人澡狠狠躁视频| 久久久国产视频91| 国内精品免费午夜毛片| 欧美精品videos| 色无极影院亚洲| 亚洲a级在线播放观看| 日韩精品中文字| 日韩美女在线观看| 91社影院在线观看| 久久777国产线看观看精品| 国产美女被下药99| 这里只有精品视频在线| 综合欧美国产视频二区| 欧美成人中文字幕| 亚州精品天堂中文字幕| 欧美最猛黑人xxxx黑人猛叫黄| 丝袜亚洲欧美日韩综合| 国产精品视频精品| 9.1国产丝袜在线观看| 456亚洲影院| 久久人人97超碰精品888| 色偷偷av一区二区三区乱| 日韩在线视频观看| 国产精品一区二区在线| 91精品久久久久久久久青青| 在线播放国产一区中文字幕剧情欧美| 秋霞av国产精品一区| 亚洲成年人在线播放| 红桃av永久久久| 亚洲第一精品久久忘忧草社区| 成人在线免费观看视视频| 久久久久国色av免费观看性色| 亚洲二区在线播放视频| 日韩中文字幕网址| 久久精品成人一区二区三区| 久久精品国产69国产精品亚洲| 亚洲精品成人久久电影| 91精品国产综合久久久久久蜜臀| 日本aⅴ大伊香蕉精品视频| 中文字幕亚洲欧美日韩高清| 国产v综合ⅴ日韩v欧美大片| 亚洲精品成人久久电影| 欧美性受xxxx白人性爽| 久久久久久久久久久网站| …久久精品99久久香蕉国产| 亚洲跨种族黑人xxx| 国产91热爆ts人妖在线| 国产suv精品一区二区| 久久在精品线影院精品国产| 一区二区三区天堂av| 午夜精品久久久久久久男人的天堂| 中国人与牲禽动交精品| 久久亚洲国产精品成人av秋霞| 97福利一区二区| 国产成人精品免高潮费视频| 国产成人一区二区| 国产热re99久久6国产精品| 国产伦精品一区二区三区精品视频| 国产91精品久| 国产女精品视频网站免费| 久久精品国产久精国产一老狼| 欧美精品成人91久久久久久久| 欧美激情网友自拍| 欧美成人精品不卡视频在线观看| 91在线中文字幕| 日韩欧美国产视频| 国产精品网站入口| 欧美激情网友自拍| 日韩亚洲第一页| 尤物九九久久国产精品的分类| 亚洲黄色有码视频| 欧美日韩一区二区免费视频| 91精品在线观看视频| 国产亚洲精品久久久久久777| 九色精品免费永久在线| 国产精品∨欧美精品v日韩精品| 神马久久桃色视频| 高潮白浆女日韩av免费看| 欧美日韩一区二区免费在线观看| 一本久久综合亚洲鲁鲁| 亚洲欧美日韩中文视频| 最好看的2019年中文视频| 国产有码在线一区二区视频| 亚洲网站在线观看| 亚洲自拍小视频| 欧美在线中文字幕| 国产精品永久免费| 亚洲精品免费一区二区三区| 亚洲成人aaa| 国产精品亚洲综合天堂夜夜| 久久激情视频免费观看| 国产精品一区二区三区成人| 久久视频在线看|