青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

VC常用小技巧(2)

如何干凈的刪除一個(gè)類(lèi)?
1、先刪除項(xiàng)目中對(duì)應(yīng)的.h.cpp文件,(選中后用Delete鍵刪除)
2
、保存后退出項(xiàng)目,到文件夾中刪除實(shí)際的.h.cpp文件;
3
、刪除.clw文件;
4
、重新進(jìn)入項(xiàng)目,進(jìn)行全部重建(rebuild all)。

如何建立一個(gè)新類(lèi)?
    
插入”(Insert)菜單中選擇新建類(lèi)”(New Class),在彈出的對(duì)話框中選擇基類(lèi)(Base class),在Name中輸入新類(lèi)的名字(一般都以C開(kāi)頭)即可。
如果想要建立一個(gè)沒(méi)有基類(lèi)的自定義類(lèi),則在New Class對(duì)話框中把Class type設(shè)置為generic,再輸入類(lèi)名即可。

如何把外來(lái)文件添加到項(xiàng)目中?
    
先把外來(lái)文件復(fù)制到當(dāng)前項(xiàng)目的目錄下,從項(xiàng)目”(Project)菜單下選擇添加項(xiàng)目”(Add to Project)下的“Files”菜單項(xiàng),從彈出的打開(kāi)文件對(duì)話框中把外來(lái)文件打開(kāi)即可。

如何在一個(gè)工作區(qū)中打開(kāi)多個(gè)項(xiàng)目?
    
一般編程者都有這樣的經(jīng)歷:做了一個(gè)項(xiàng)目,由于不滿(mǎn)意,想從頭重做,但又想把舊項(xiàng)目的一些可用內(nèi)容拷到新項(xiàng)目中來(lái),以免做重復(fù)工作,這時(shí)就需要在新項(xiàng)目中打開(kāi)舊項(xiàng)目。
    
先打開(kāi)新項(xiàng)目,從項(xiàng)目”(Project)菜單下選擇插入項(xiàng)目到工作區(qū)”(Insert Project into Workspace),從彈出的打開(kāi)文件對(duì)話框中打開(kāi)舊項(xiàng)目的.asp文件即可。
    
之后,可以利用項(xiàng)目”(Project)菜單下的設(shè)置活動(dòng)項(xiàng)目”(Select Active Project)的選項(xiàng)中切換各打開(kāi)的項(xiàng)目。
注意:在一個(gè)工作區(qū)中打開(kāi)的各項(xiàng)目不能同名。

如何把項(xiàng)目中的文件分類(lèi)存放?
當(dāng)我們往項(xiàng)目中添加新類(lèi)時(shí),它會(huì)把源文件放在Source Files下,頭文件放在Header Files下。當(dāng)項(xiàng)目中文件很多時(shí),管理不便,最好添加新節(jié)點(diǎn),把文件分類(lèi)放置。
右擊項(xiàng)目節(jié)點(diǎn)樹(shù)的根節(jié)點(diǎn),選擇“New Folder...”,在彈出的對(duì)話框中填入新節(jié)點(diǎn)名,則新節(jié)點(diǎn)就建立了,用鼠標(biāo)節(jié)點(diǎn)樹(shù)中的文件拖入新節(jié)點(diǎn),就可以把文件分類(lèi)了。
以上分類(lèi)只是在項(xiàng)目的節(jié)點(diǎn)樹(shù)中分類(lèi),它不影響文件在磁盤(pán)上的位置,所有.cpp文件和.h文件仍在項(xiàng)目的根目錄下,最好文件本身也能分類(lèi)存放在不同文件夾中。
Windows下,用新建文件夾在項(xiàng)目的根目錄下建立子文件夾,如DialogClass,把所有對(duì)話框類(lèi)的.cpp文件和.h文件拖入其中。
回到VC下,右鍵單擊項(xiàng)目樹(shù)中更改了路徑的節(jié)點(diǎn),選擇“Properties”,在彈出的對(duì)話框中修改文件路徑,如:把原路徑“.\Dialog1.cpp”改為“.\DialogClass\Dialog1.cpp”。
打開(kāi)Dialog1.cpp文件,修改它包含的文件路徑。如:
#include "stdafx.h"
#include "PluckBox.h"
#include "Dialog1.h"
改為:
#include "stdafx.h"
#include "..\\PluckBox.h"
#include "Dialog1.h"
打開(kāi)ClassWizard,它會(huì)提示你文件不存在,單擊確定后,從對(duì)話框中用“Browse...”選擇文件所在路徑,則ClassWizard也可正常使用了。



編輯
編輯代碼時(shí),跟隨提示消失了怎么辦?
單 擊工具”(Tools)菜單中的設(shè)置”(Options)菜單項(xiàng),在彈出的Options對(duì)話框中選擇Editor制表頁(yè),把它最下方的四個(gè)復(fù)選框都 選中(Auto list memberAuto type infoCode comments、Auto parameter info),這樣,當(dāng)用戶(hù)輸入“->”“.”時(shí),會(huì)自動(dòng)顯示跟隨提示,減少了輸入負(fù)擔(dān)。



對(duì)話框
如何修改對(duì)話框的背景色
在對(duì)話框的OnPaint()函數(shù)中加入下面語(yǔ)句:
CRect rect;
GetClientRect(&rect); //
計(jì)算對(duì)話框的尺寸
dc.FillSolidRect(&rect,RGB(192,248,202)); //
繪制對(duì)話框背景色

如何讓彈出式對(duì)話框具有統(tǒng)一的背景色
在應(yīng)用程序類(lèi)CxxxAppInitInstance()函數(shù)中加入下面的語(yǔ)句:
SetDialogBkColor( RGB(192,248,202) );
則所有用戶(hù)定義的彈出式對(duì)話框都以RGB(192,248,202)為背景色,就不需要逐個(gè)進(jìn)行設(shè)置了。


如何讓打開(kāi)文件對(duì)話框能進(jìn)行多項(xiàng)選擇
在定制打開(kāi)文件對(duì)話框時(shí),增加OFN_ALLOWMULTISELECT屬性,就可以使打開(kāi)文件對(duì)話框進(jìn)行多選了。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );
之后,用GetStartPosition()函數(shù)獲取選擇的起始文件位置,用GetNextPathName()函數(shù)獲取各位置上的文件名。
如:
if( m_Dlg.DoModal() == IDOK )
{
POSITION pos;
pos = m_Dlg.GetStartPosition();
while( pos )
{
m_Path = m_Dlg.GetNextPathName(pos);
…………
}
}

為什么用打開(kāi)文件對(duì)話框選擇多個(gè)文件到一定數(shù)目時(shí),文件沒(méi)有打開(kāi)?
CFileDialog
為文件列表設(shè)置有緩沖區(qū),當(dāng)選擇文件過(guò)多時(shí),會(huì)造成緩沖區(qū)溢出,造成一些文件沒(méi)有被打開(kāi)??梢圆捎米远x大緩沖區(qū)代替系統(tǒng)緩沖區(qū)的方法解決。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );//
定制打開(kāi)文件對(duì)話框
char* pBuf = new char[20480]; //
申請(qǐng)緩沖區(qū)
m_Dlg.m_ofn.nMaxFile = 20480; //
pBuf代替CFileDialog緩沖區(qū)
m_Dlg.m_ofn.lpstrFile = pBuf;
m_Dlg.m_ofn.lpstrFile[0] = NULL;
…………
delete []pBuf; //
回收緩沖區(qū)

提示對(duì)話框(MessageBox
在視類(lèi)和對(duì)話框類(lèi)中可使用MFC函數(shù)中用的MessageBox()函數(shù)彈出提示對(duì)話框。這個(gè)函數(shù)原型為:
int MessageBox(LPCTSTR lpszText,LPCTSTR lpsCaption=NULL,UINT nType=MB_OK);
參數(shù):lpszText 顯示的字符串
lpsCaption
對(duì)話框的標(biāo)題
nType
風(fēng)格,可為如下值的組合:
指定下列標(biāo)志中的一個(gè)來(lái)顯示消息框中的按鈕,標(biāo)志的含義如下。
MB_ABORTRETRYIGNORE
:消息框含有三個(gè)按鈕:Abort,RetryIgnore。
MB_OK
:消息框含有一個(gè)按鈕:OK。這是缺省值。
MB_OKCANCEL
:消息框含有兩個(gè)按鈕:OKCancel
MB_RETRYCANCEL
:消息框含有兩個(gè)按鈕:RetryCancel
MB_YESNO
:消息框含有兩個(gè)按鈕:YesNo。
MB_YESNOCANCEL
:消息框含有三個(gè)按鈕:Yes,NoCancel。
指定下列標(biāo)志中的一個(gè)來(lái)顯示消息框中的圖標(biāo):標(biāo)志的含義如下。
MB_ICONEXCLAMATION:
MB_ICONWARNING
:一個(gè)驚嘆號(hào)出現(xiàn)在消息框。
MB_ICONINFORMATION

MB_ICONASTERISK
:一個(gè)圓圈中小寫(xiě)字母i組成的圖標(biāo)出現(xiàn)在消息框。
MB_ICONOUESTION:
一個(gè)問(wèn)題標(biāo)記圖標(biāo)出現(xiàn)在消息框。
MB_ICONSTOP:
MB_ICONERROR

MB_ICONHAND
:一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框。
指定下列標(biāo)志中的一個(gè)來(lái)指定缺省的按鈕:標(biāo)志的含義如下。
MB_DEFBUTTON1
:第一個(gè)按鈕為缺省按鈕。如果MB_DEFBUTTON2MB_DEFBUTTON3,MB_DEFBUTTON4沒(méi)有被指定,則MB_DEFBUTTON1為缺省值。
MB_DEFBUTTON2
;第二個(gè)按鈕為缺省按鈕。
MB_DEFBUTTON3
:第三個(gè)按鈕為缺省按鈕。
MB_DEFBUTTON4
:第四個(gè)按鈕為缺省按鈕。
例:提示文件是否存盤(pán):
int t;
t=MessageBox(m_PathName+"
的文字已經(jīng)改變,要存盤(pán)嗎?",
"
警告",MB_YESNOCANCEL | MB_ICONWARNING);
if(t==0 || t==IDCANCEL)
return;
if(t==IDYES)
OnFileSave();
在文檔類(lèi)等其它類(lèi)中不能使用MFC中的MessageBox()函數(shù),只能使用API函數(shù)中的MessageBox()函數(shù):
int MessageBox(HWND hWnd,LPCTSTR lpszText,LPCTSTR lpCaption,UINT UType);
hWnd:
標(biāo)識(shí)將被創(chuàng)建的消息框的擁有窗口。如果此參數(shù)為NULL,則消息框沒(méi)有擁有窗口。
后三個(gè)參數(shù)與視類(lèi)的MessageBox相同,但沒(méi)有缺省值,必須設(shè)置。
例:::MessageBox(NULL,m_PathName+"的文字已經(jīng)改變,要存盤(pán)嗎?",
"
警告",MB_YESNOCANCEL | MB_ICONWARNING);



調(diào)試
error C2146: syntax error : missing ';' before identifier ……
如果出現(xiàn)這個(gè)錯(cuò)誤且錯(cuò)誤數(shù)目很多,通常并不是缺失了分號(hào)引起的,而是忘記了添加某頭文件引起的。
最常見(jiàn)的是新加入了對(duì)話框,然后用它的類(lèi)定義了一個(gè)對(duì)象,再編譯出現(xiàn)上面的錯(cuò)誤。
解決方法是在引用新類(lèi)的文件中加入#include "類(lèi)名.h",再編譯,錯(cuò)誤消失。

fatal error C1010: unexpected end of file while looking for precompiled header directive
在一個(gè)項(xiàng)目中,如果用“New”向工程中添加了一個(gè).cpp文件,編譯,出錯(cuò)。
解決方法:
                   1)   在新建的.cpp文件的開(kāi)頭加入#include "stdafx.h"。
                   2)   可以使用右鍵點(diǎn)擊項(xiàng)目工程中的該cpp文件,選擇setting,在c/c++欄,選擇PreCompiled headers,然后設(shè)置第一選項(xiàng),選擇不使用預(yù)編譯頭,解決這個(gè)問(wèn)題。發(fā)布
Debug
模式和Release模式
早就發(fā)現(xiàn)用VC編譯出來(lái)的.exe文件比用Turbo C編譯出來(lái)的文件大了許多,于是就認(rèn)為VC編譯時(shí)一定加了很多沒(méi)用的東西,記得當(dāng)時(shí)還做過(guò)把VC自動(dòng)生成的項(xiàng)目中自認(rèn)為沒(méi)用的函數(shù)都刪掉的傻事。后來(lái)才從網(wǎng)上的文章中了解到還有編譯模式一說(shuō)。
Debug
模式是用來(lái)調(diào)試用的,它生成的執(zhí)行文件中含有大量調(diào)試信息,所以很大;
Release
模式生成的執(zhí)行文件消除了這些調(diào)試信息,可用來(lái)作為成品發(fā)布。
默 認(rèn)情況下是Debug模式,切換方法是在編譯”(Build)菜單中選設(shè)置項(xiàng)目配置”(Set Active Configure)。從彈出的對(duì)話框中選擇Win32 Release模式,然后再重新編譯。這時(shí)在工作目錄下會(huì)多出一個(gè)Release目錄,其中的exe文件比Debug目錄下的那個(gè)要小得多。

動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)
VC 做好了一個(gè)程序,拿到別人那里卻不能運(yùn)行,這也是很多編程者都經(jīng)歷過(guò)的,這樣的軟件只能在安裝有VC的機(jī)器上運(yùn)行,也不應(yīng)拿出去發(fā)布。實(shí)際上如果你沒(méi)有使 用ActiveX控件和自定義的動(dòng)態(tài)DLL技術(shù),只需把MFC的動(dòng)態(tài)鏈接庫(kù)打包到你的程序里就可以了,也就是使用靜態(tài)鏈接庫(kù)。
設(shè)置方法:從項(xiàng)目”(Project)菜單下選擇設(shè)置” (Settings),在彈出的對(duì)話框中的General選項(xiàng)卡下,把“User MFC in a Shared DLL”改為“User MFC in a Static Library”,關(guān)閉對(duì)話框后重新編譯即可。
在靜態(tài)鏈接庫(kù)下編譯的文件比動(dòng)態(tài)鏈接庫(kù)的要大很多,不過(guò),如果使用Release模式編譯,一般也就幾百K,它就可以在沒(méi)有安裝VC的機(jī)器上運(yùn)行了。

發(fā)布VC源代碼時(shí),哪些文件可以刪除?
AfxGetMainWnd()->SetWindowText("文檔標(biāo)題"+" - "+"程序標(biāo)題");

四、設(shè)置默認(rèn)按鈕:
在定義控件變量時(shí),ClassWizard在構(gòu)造函數(shù)中會(huì)把變量初值設(shè)為-1,只需把它改為其它值即可。
如:
//{{AFX_DATA_INIT(CWEditView)
m_Ridio1 = 0; //
初始時(shí)第一個(gè)單選按鈕被選中
m_Ridio4 = 0; //
初始時(shí)第四個(gè)單選按鈕被選中
//}}AFX_DATA_INIT

旋轉(zhuǎn)控件(Spin)的使用
當(dāng)單擊旋轉(zhuǎn)控件上的按鈕時(shí),相應(yīng)的編輯控件值會(huì)增大或減小。其設(shè)置的一般步驟為:
一、在對(duì)話框中放入一個(gè)Spin控件和一個(gè)編輯控件作為Spin控件的伙伴窗口
設(shè)置Spin控件屬性:Auto buddy、Set buddy integer、Arrow keys
設(shè)置文本控件屬性:Number
二、用ClassWizardSpin控件定義變量m_Spin,為編輯控件定義變量m_Edit,定義時(shí)注意要把m_Edit設(shè)置為int型。
三、在對(duì)話框的OnInitDialog()函數(shù)中加入語(yǔ)句:
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();

m_Spin.SetBuddy( GetDlgItem( IDC_EDIT1 ) ); //
設(shè)置編輯控件為Spin控件的伙伴窗口
m_Spin.SetRange( 0, 10 ); //
設(shè)置數(shù)據(jù)范圍為0-10
return TRUE;
}
四、用ClassWizard為編輯控件添加EN_CHANGE消息處理函數(shù),再加入語(yǔ)句:
void CMyDlg::OnChangeEdit1()
{
m_Edit = m_Spin.GetPos(); //
獲取Spin控件當(dāng)前值
}

UpdateData()
對(duì)于可以接收數(shù)據(jù)的控件,如編輯控件來(lái)說(shuō),UpdateData()函數(shù)至關(guān)重要。當(dāng)控件內(nèi)容發(fā)生變化時(shí),對(duì)應(yīng)的控件變量的值并沒(méi)有跟著變化,同樣,當(dāng)控件變量值變化時(shí),控件內(nèi)容也不會(huì)跟著變。
UpdateData()
函數(shù)就是解決這個(gè)問(wèn)題的。
UpdateData(true);
把控件內(nèi)容裝入控件變量
UpdateData(false);
用控件變量的值更新控件
如:有編輯控件IDC_EDIT1,對(duì)應(yīng)的變量為字符串m_Edit1,
1
、修改變量值并顯示在控件中:
m_Edit1 = _T("結(jié)果為50");
UpdateData(false);
2
、讀取控件的值到變量中:
ClassWizardIDC_EDIT1添加EN_CHANGE消息處理函數(shù),這個(gè)函數(shù)在編輯控件內(nèi)容發(fā)生變化時(shí)執(zhí)行。
void CEditView::OnChangeEdit1()
{
UpdateData(true); //
更新變量值
}



其它
如何獲取程序所在的路徑
也就是獲取你這個(gè)程序本身所在的路徑。
在應(yīng)用程序類(lèi)CxxApp的頭文件中定義一個(gè)變量CString m_exePath;用來(lái)放置程序的路徑名,在應(yīng)用程序類(lèi)CxxAppInitInstance()函數(shù)中加入如下語(yǔ)句:
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] = '\0';
m_exePath.Format( "%s", m_Path ); //
分離路徑名(去掉程序名)
這段程序執(zhí)行后,字符串變量m_exePath中放置的就是程序所在路徑,其中不包括程序名。
獲取程序的位置有什么用呢?
1
、打開(kāi)與應(yīng)用程序在一起放置的數(shù)據(jù)文件:
如果你運(yùn)行程序過(guò)程中使用過(guò)打開(kāi)文件對(duì)話框打開(kāi)過(guò)其它路徑下的文件,這時(shí)系統(tǒng)的默認(rèn)路徑就發(fā)生了改變,有可能使你原定的數(shù)據(jù)文件打不開(kāi)了,如果采用以下方法就可以沒(méi)問(wèn)題了:
CFile file;
file.Open( m_exePath+"
數(shù)據(jù)文件名", CFile::modeRead );
2
、放置程序運(yùn)行中的臨時(shí)文件:
同樣,當(dāng)系統(tǒng)的默認(rèn)路徑發(fā)生改變后,程序中生成的臨時(shí)文件就會(huì)放得到處都是,成了一個(gè)個(gè)垃圾文件,采用以下方法可使臨時(shí)文件只放在程序所在路徑下:
CFile file;
file.Open( m_exePath+"
臨時(shí)文件名", CFile::modeCreate | CFile::modeWrite );
……
程序結(jié)束時(shí),用下面的方法刪除臨時(shí)文件:
CFile::Remove( m_exePath+"
臨時(shí)文件名" );

如何在你的程序中執(zhí)行其它程序
在自己的程序中調(diào)用其它程序的方法有好幾種,這里我介紹我用過(guò)的兩種:
一、WinExec()函數(shù):
一般用法:WinExec(m_PathName,SW_SHOWNORMAL);
m_PathName
為執(zhí)行程序的路徑名,必須為可執(zhí)行文件。
如:WinExec("C:\\Program Files\\Internet Explorer\\iexplore.exe",SW_SHOWNORMAL);為打開(kāi)IE瀏覽器

二、ShellExecute()函數(shù):
一般用法:ShellExecute(NULL,NULL,m_PathName,NULL,_T("c:\\temp"),SW_SHOWNORMAL);
m_PathName
為打開(kāi)的程序路徑名;
_T("c:\\temp")
為工作目錄;
WinExec()不同的是ShellExecute()函數(shù)也可以打開(kāi)非可執(zhí)行文件,比如你指定的文件為.txt,結(jié)果會(huì)打開(kāi)記事本裝入該文件。我用這種方法調(diào)用自己制作的幫助文件(.chm)效果很好。

如果不使用串行化,如何在程序結(jié)束時(shí)保存文件?
在文檔-視圖結(jié)構(gòu)中,用串行化自動(dòng)保存文件在各種VC書(shū)上都有介紹?,F(xiàn)在的問(wèn)題是我不使用串行化,而是自己動(dòng)手保存,當(dāng)點(diǎn)擊窗口的關(guān)閉按鈕時(shí),如何提示并保存文檔。
ClassWizard在文檔類(lèi)(CxxDoc)中添加函數(shù)CanCloseFrame(),再在其中加入保存文件的語(yǔ)句就可以了。
例:
//
退出程序
BOOL CEditDoc::CanCloseFrame(CFrameWnd* pFrame)
{
CFile file;
if(b_Flag) //b_Flag
為文檔修改標(biāo)志,在修改文檔時(shí)將其置為True
{
int t;
t=::MessageBox(NULL,"
文字已經(jīng)改變,要存盤(pán)嗎?","警告",
MB_YESNOCANCEL | MB_ICONWARNING); //
彈出提示對(duì)話框
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); //
定制文件對(duì)話框
int k=m_Dlg.DoModal(); //
彈出文件對(duì)話框
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); //
數(shù)據(jù)寫(xiě)入文件
file.Close();
}
}
return CDocument::CanCloseFrame(pFrame);
}
這樣當(dāng)你單擊窗口上的關(guān)閉按鈕時(shí),如果數(shù)據(jù)已修改了,就會(huì)彈出一個(gè)提示保存數(shù)據(jù)的對(duì)話框,提示你保存數(shù)據(jù)。
程序中的b_Flag是數(shù)據(jù)修改標(biāo)志,應(yīng)該在修改數(shù)據(jù)時(shí)進(jìn)行設(shè)置,m_Text是準(zhǔn)備保存的數(shù)據(jù),放在文檔內(nèi)。

POSITION
怎么用?
POSITION
類(lèi)型數(shù)據(jù)用于表征各種列表中元素的位置,它類(lèi)似于數(shù)組的下標(biāo),但又有所不同。主要區(qū)別是:
我們不能訪問(wèn)POSITION型數(shù)據(jù)的值,也不能對(duì)POSITION數(shù)據(jù)型數(shù)據(jù)進(jìn)行加減、比較等運(yùn)算。
POSITION型數(shù)據(jù)訪問(wèn)列表時(shí),都是采用迭代法,一般格式為:
POSITION pos; //
定義pos型變量
pos = GetHeadPosition(); //
獲取列表起始元素位置
while( pos )
{
x = GetNext(pos); //
獲取pos處的列表值,同時(shí)修改pos為下一個(gè)元素位置
}
GetNext()
就是一種迭代,其格式為:
TYPE GetNext(POSITION& rPosition);
首先,它返回當(dāng)前pos位置處的元素;再就是把pos值修改為下一個(gè)元素位置。這樣循環(huán)時(shí),可依次取得列表中各元素的值;當(dāng)?shù)竭_(dá)列表尾時(shí),posNULL,循環(huán)結(jié)束。
所以使用POSITION型數(shù)據(jù)時(shí),你不要試圖用加減等操作去修改它,只能用GetNext()(向后迭代)或GetPrev()(向前迭代)反復(fù)迭代來(lái)修改它的值。
如果你想直接到達(dá)指定值,還可以用Find()函數(shù)或FindIndex()函數(shù)獲得指定值的POSITION值。
POSITION Find(TYPE Value);
用于在列表中查找值為Value的元素的POSITION值;
POSITION FindIndex(int nIndex);
用于獲取列表中第nIndex個(gè)元素的POSITION值,nIndex0開(kāi)始。
如:
pos = FindIndex(5); //
求列表中第5個(gè)元素的位置
x = GetNext(pos); //
讀取元素的值
總之,POSITION類(lèi)型在多種涉及列表的類(lèi)中提供,不同的類(lèi)提供的函數(shù)有所不同,但用法都是類(lèi)似的。

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

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

posted on 2008-04-13 11:37 wrh 閱讀(437) 評(píng)論(0)  編輯 收藏 引用


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


導(dǎo)航

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            性欧美在线看片a免费观看| 欧美一二区视频| 日韩视频在线观看免费| 在线成人亚洲| 欧美在线观看一区二区| 午夜在线不卡| 国产精品色婷婷久久58| 亚洲综合欧美日韩| 欧美一级理论片| 国产女人水真多18毛片18精品视频| 99精品视频免费全部在线| 99精品国产高清一区二区 | 性欧美办公室18xxxxhd| 欧美日韩一级黄| 99视频有精品| 亚洲女性裸体视频| 国产精品一区二区久久久久| 亚洲伊人网站| 欧美在线视屏| 玉米视频成人免费看| 美女网站久久| 亚洲激情成人| 一区二区三区**美女毛片| 欧美午夜视频网站| 亚洲欧美在线免费观看| 久久久久久久高潮| 亚洲国产精品一区| 欧美理论电影在线观看| 中文国产成人精品久久一| 欧美一级理论片| 禁断一区二区三区在线| 欧美精品日韩| 午夜精品在线观看| 欧美成人午夜视频| 亚洲视频中文字幕| 国产在线欧美| 欧美电影在线免费观看网站| 在线免费一区三区| 麻豆91精品| 日韩视频―中文字幕| 久久精品女人| 亚洲精品视频免费| 国产精品毛片| 美女视频一区免费观看| 在线午夜精品自拍| 欧美a级片网站| 午夜精品免费| 欧美片第1页综合| 亚洲一区精彩视频| 欧美大片免费| 欧美一区深夜视频| 日韩视频精品| 好吊色欧美一区二区三区视频| 欧美日本国产| 久久久久久夜| 亚洲综合欧美日韩| 亚洲人成网在线播放| 久久九九99视频| 亚洲在线观看| 99国产精品久久久久久久成人热 | 一二三区精品福利视频| 久久综合影视| 亚洲影院色在线观看免费| 黄色亚洲在线| 国产精品腿扒开做爽爽爽挤奶网站| 久久一区二区三区av| 亚洲一区二区在线观看视频| 亚洲福利一区| 另类亚洲自拍| 欧美诱惑福利视频| 中文在线一区| 亚洲精品国精品久久99热| 国内伊人久久久久久网站视频| 欧美日韩国产片| 免费看黄裸体一级大秀欧美| 久久不射2019中文字幕| 亚洲一区二区三区乱码aⅴ| 亚洲日本在线观看| 欧美黄在线观看| 久久综合久色欧美综合狠狠| 午夜久久久久久久久久一区二区| 一区二区三欧美| 亚洲毛片播放| 亚洲久久一区二区| 亚洲三级影片| 亚洲黄色大片| 1000部国产精品成人观看| 国产在线拍偷自揄拍精品| 国产精品丝袜白浆摸在线| 欧美性猛片xxxx免费看久爱| 欧美激情精品久久久久久变态| 老鸭窝毛片一区二区三区| 久久人人九九| 久久频这里精品99香蕉| 午夜精品区一区二区三| 亚洲一级影院| 午夜精品久久一牛影视| 午夜精品福利在线观看| 亚洲一区二区三区在线观看视频| 99riav国产精品| 99ri日韩精品视频| 中文有码久久| 亚洲自拍偷拍麻豆| 午夜久久影院| 久久久999国产| 久久夜色精品国产亚洲aⅴ | 日韩一级大片在线| 99精品视频免费观看视频| 一区二区三区四区蜜桃| 一本久久知道综合久久| 亚洲一二三级电影| 欧美亚洲日本网站| 欧美日韩一区二区三区在线看 | 亚洲一区二区三区中文字幕 | 亚洲高清在线观看| 韩国三级在线一区| 激情视频一区二区| 精品电影一区| 91久久线看在观草草青青| 91久久在线观看| 亚洲美女诱惑| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲天堂成人在线视频| 午夜视频在线观看一区二区| 久久国产黑丝| 欧美v日韩v国产v| 欧美日韩高清区| 国产精品美腿一区在线看 | 欧美1区视频| 欧美日韩亚洲高清一区二区| 国产精品家庭影院| 影音先锋中文字幕一区| 99re视频这里只有精品| 亚洲综合丁香| 蜜桃av一区| 亚洲精品国产精品国自产观看浪潮| 一本大道av伊人久久综合| 亚洲综合电影一区二区三区| 久久亚洲精品中文字幕冲田杏梨| 欧美日韩国产综合网| 国产午夜精品一区二区三区欧美| 亚洲成人在线免费| 亚洲一区免费网站| 免费观看成人| 亚洲视频综合在线| 麻豆精品网站| 国产欧美日韩三级| 99精品视频网| 久久一区免费| 在线视频亚洲| 欧美ab在线视频| 国产三级欧美三级| 99av国产精品欲麻豆| 久久精品亚洲一区二区| 亚洲人妖在线| 久久久久99精品国产片| 国产精品国产三级国产普通话蜜臀 | 国产精品入口麻豆原神| 亚洲激情偷拍| 久久精品亚洲一区二区三区浴池| 亚洲日本无吗高清不卡| 久久久另类综合| 国产精品久久九九| 亚洲另类自拍| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一区二区影院| 欧美三级视频在线| 99re66热这里只有精品4| 另类图片综合电影| 久久不射中文字幕| 国产精品视频九色porn| 一区二区日韩免费看| 亚洲第一主播视频| 久久噜噜噜精品国产亚洲综合| 国产精品自拍三区| 亚洲欧美乱综合| 在线视频一区二区| 欧美体内谢she精2性欧美| 亚洲精品免费在线| 欧美激情bt| 久热精品在线视频| 亚洲国产成人tv| 久久免费高清视频| 久久国产精品网站| 国内精品久久久久久影视8| 亚洲欧美日韩久久精品 | 久久婷婷国产综合国色天香| 亚洲天堂激情| 国产精品一区二区久久久久| 午夜精品久久久久久久久久久久| 一区二区欧美在线观看| 欧美体内she精视频| 一区二区三区视频在线观看| 日韩一级大片在线| 韩日在线一区| 欧美一区二区三区免费在线看| 在线综合+亚洲+欧美中文字幕| 亚洲国产小视频在线观看| 另类图片国产| 亚洲欧洲在线播放|