1:我怎樣才能建立一個等待光標(biāo)?
調(diào)用BeginWaitCursor函數(shù)來啟動等待光標(biāo),,調(diào)用EndWaitCursor函數(shù) 來結(jié)束等待光標(biāo),。要注意,二者都要調(diào)用App的成員函數(shù),如下所示: AfxGetApp()->BeginWaitCursor(); // 要做的事 AfxGetApp()->EndWaitCursor(); 2:什么是COLORREF? 我該怎樣用它? COLORREF是一個32-bit整型數(shù)值,,它代表了一種顏色,。你可以使用RGB函數(shù)來初始化COLORREF。 例如: COLORREF color = RGB(0, 255, 0); RGB函數(shù)接收三個0-255數(shù)值,,一個代表紅色,,一個代表綠色,一個代表藍(lán)色,。在上面的例子中,,紅色和藍(lán)色值都為0,所以在該顏色中沒有紅色和藍(lán)色,。綠色為最大值255,。所以該顏色為綠色。0,0,0為黑色,,255,255,255為白色,。 3:我在我的程序中是了CDWordArray。我向它添加了約10,000個整數(shù),,這使得它變得非常非常慢,。 CDWordArray是很好用的,只是因為你沒有指定數(shù)組的最大尺寸,。 因此,,當(dāng)你添加新元素時,該類會從堆中重新分配空間,。不幸的是,,該類會在每次插入新元素時都為數(shù)組重新分配空間。如果你向它添加了很多新元素,,所有這些分配和復(fù)制數(shù)組的操作會就會使它變慢,。 解決該問題的方法是,你可以使用SetSize 函數(shù)的第二個參數(shù)來改變這種重新分配的頻率,。例如,,如果你把該參數(shù)設(shè)置為500 ,則每次數(shù)組空間超出時它才重新分配并添加500個新空間,,而不是1個,。這樣一來 ,你就可以不用重新分配而添加了另外499個元素空間,,這也會大大提高程序的運(yùn)行速度,。 4:AppWizard所產(chǎn)生的STDAFX文件是干什么用的? 它主要是協(xié)助產(chǎn)生預(yù)編譯頭文件的。通常你是不需要修改它的,。 5:在我的程序的某些部分,,我可以調(diào)用 MessageBox 函數(shù)來建立一個信息對話框,,例如在視類中。但是,,在其它部分我卻不能,,如文檔類中。為什么,?我怎樣才能在我的應(yīng)用程序類中建立一個信息對話框? MessageBox函數(shù)來自CWnd類,,所以你只能在從CWnd繼承的類(如CView)中調(diào)用它。但是,,MFC也提供了AfxMessageBox函數(shù),,你可以在任何地方調(diào)用它。 6:我需要在我的程序中設(shè)置全局變量,,以使文檔中的所有類都能訪問,。我應(yīng)該把它放到哪兒? 把該變量放到該應(yīng)用程序類的頭文件中的attribute處。然后,,在程序的任何地方,你都可以用下面的方法來訪問該變量: CMyApp *m_App = (CMyApp *)AfxGetApp(); m_App->MyGlobalVariable = ...; 7:我聽說MFC可以發(fā)現(xiàn)內(nèi)存漏洞,,我怎樣使用該特性? 如果你在Debug菜單中的Go選項(不是Project菜單中的Execute選項)來運(yùn)行你的應(yīng)用程序,,MFC應(yīng)該在程序終止時報告內(nèi)存漏洞。如果沒有,,那么試試運(yùn)行MFC Tracer 工具程序(在VC++程序組中),,并啟動跟蹤。然后返回應(yīng)用程序,。 8:我怎樣才能在我的應(yīng)用程序中循環(huán)瀏覽已經(jīng)打開的文檔? 使用CDocTemplate中未公開的GetFirstDocPosition()和GetNextDoc()函數(shù),。 9:我怎樣才能在我的應(yīng)用程序中循環(huán)瀏覽已經(jīng)打開的視? 使用CDocument中未公開的GetFirstViewPosition()和GetNextView()函數(shù)。 10:虛擬函數(shù)PreCreateWindow是干什么用的? PreCreateWindow允許你在調(diào)用CreateWindow之前來改變窗口屬性,。 11:我應(yīng)該怎樣防止MFC在窗口標(biāo)題欄上添加文檔名? 在PreCreateWindow函數(shù)中刪除FWS_ADDTOTITLE標(biāo)志的窗口樣式: cs.style &= ~FWS_ADDTOTITLE ; 12:我應(yīng)該怎樣防止MFC在窗口標(biāo)題欄上把文檔名預(yù)置成應(yīng)用程序名? 在PreCreateWindow函數(shù)中刪除FWS_PREFIXTITLE標(biāo)志的窗口樣式: cs.style &= ~FWS_PREFIXTITLE; 13:我有一無模式對話框,。我怎樣才能在窗口退出時刪除CDialog對象? 把“delete this”加到PostNcDestroy中。這主要用在需要自動刪除對象的場合,。 14:為什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy? OnNcDestroy只被已建立的窗口調(diào)用,。如果建立窗口失敗(如PreCreateWindow), 則沒有窗口處來發(fā)送WM_NCDESTROY消息,。PostNcDestroy是在對象窗口被完全刪除,, 在OnNcDestroy后,甚至在窗口建立失敗之后調(diào)用的,。 15:File菜單中的MRU列表是從哪兒來的,?列表中的名字放在哪兒了?我怎樣才能改變列表中項目的最大值,? 在應(yīng)用程序類的InitInstance函數(shù)中對LoadStdProfileSettings的調(diào)用中,。該調(diào)用接受一個參數(shù)(在缺省情況下如果沒有傳遞值則為4)。MRU文件名是從INI文件中調(diào)用的。如果你有帶有ID_FILE_MRU_FILE1的ID的菜單選項,,它會為調(diào)入的MRU列表所替換,。如果你改變傳遞給LoadStdProfileSettings的數(shù)值(最大為16),則你就改變了所裝如文件名的最大值,。 16:我在菜單中添加了新的項,。但是,當(dāng)我選該項時,,在狀態(tài)欄上沒有出現(xiàn)任何提示信息,。為什么? 打開資源文件中的菜單模板。打開新菜單選項的屬性對話框,。在對話框的底部的Prompt編輯框中,,你可以如下指定狀態(tài)欄上的提示信息和工具欄上的提示信息 (如果你已經(jīng)建立的工具欄按鈕): Status bar string\nFlying tag |
|