1:使用vc開(kāi)發(fā)項(xiàng)目時(shí),常會(huì)遇到這種情況:
即明明只改動(dòng)了一個(gè)文件,卻要把整個(gè)項(xiàng)目全部重新編譯連接一次。剛剛連接好,一運(yùn)行,又提示重新編譯連接一次,非常討厭。這是因?yàn)槌霈F(xiàn)了未來(lái)文件的緣故。
解決方法:
找出對(duì)應(yīng)文件夾下的debug目錄,將未來(lái)文件全部delete, 再rebuild all一次。(未來(lái) 文件即其創(chuàng)建和修改時(shí)間都比系統(tǒng)時(shí)間靠后)
2:有時(shí),中的顯示混亂。其表現(xiàn)如下:
(1):添加的成員變量或函數(shù)不能顯示;
(2):即使顯示出來(lái)了變量或函數(shù),雙擊后不能跳至正確的位置。
解決方法:
刪除.ncb文件,再rebuild all.
3:如何干凈的刪除一個(gè)類(lèi)?
1:先從中的中刪除對(duì)應(yīng)的.h和.cpp文件。
2.再關(guān)閉項(xiàng)目,從實(shí)際的文件夾中刪除對(duì)應(yīng)的.h和.cpp文件。
3.再刪除.clw文件。
打開(kāi)項(xiàng)目,rebuild all。
4:初學(xué)者常有這樣的疑惑:
直接望工程文件里加入一個(gè)cpp原文件再編譯連接的話老是提示沒(méi)有找到預(yù)編譯頭
解決方法:
#include "stdafx.h"
5:如何向項(xiàng)目中加入自己定義的類(lèi)?
方法很多,介紹一個(gè)簡(jiǎn)便的:
選擇insert/new class菜單
彈出對(duì)話框;
選擇class type為generic;
輸入類(lèi)名。
當(dāng)然,也可以自己決定該類(lèi)的基類(lèi)
6:如何在工作區(qū)()導(dǎo)入多個(gè)項(xiàng)目(project)?
在打開(kāi)一個(gè)項(xiàng)目(*.dsp文件)后,在利用“project” 菜單下insert project into 子菜單選擇另一個(gè)項(xiàng)目文件(*.dsp文件),可插入另一個(gè)項(xiàng)目。
在 視圖中,右鍵可以激活其中某個(gè)項(xiàng)目,工作區(qū)插入多個(gè)項(xiàng)目能方便不同項(xiàng)目間拷貝代碼、資源等。
7: 在 視圖中類(lèi)太多如何整理?
我們可以在 視圖中右鍵新建文件夾(new folder),再把具有相近性質(zhì)的類(lèi)拖到對(duì)應(yīng)的文件夾中,使整個(gè)視圖看上去清晰明了。
8:如何快速刪除項(xiàng)目下debug 文件夾中臨時(shí)文件?
在視圖中選中對(duì)應(yīng)項(xiàng)目,右鍵clean即可。
9: 打開(kāi)一個(gè)源文件較大的項(xiàng)目編輯操作非常慢,怎么辦?
不要打開(kāi)項(xiàng)目文件(*.dsp文件),直接打開(kāi)要編輯的單個(gè)源文件(*.h或*.cpp)進(jìn)行編輯,要快得多。
10:如果想把整個(gè)項(xiàng)目拷貝到軟盤(pán),那些文件可以刪掉?
除了項(xiàng)目文件夾中debug文件夾可以刪除外,.ncb,.clw,.opt 等文件也可以刪除,這些文件rebuilt all后可以重新生成。
11:怎樣快速生成一個(gè)與現(xiàn)有項(xiàng)目除了項(xiàng)目名外完全相同的新項(xiàng)目?
利用file菜單下生成新項(xiàng)目中的custom ,選擇 an project ,然后選擇現(xiàn)有項(xiàng)目的項(xiàng)目文件名(*.dsp)finish,編譯后就生成一個(gè)可以生成與現(xiàn)有項(xiàng)目相同但可以重新取名的項(xiàng)目的。你可以象用mfc 一樣用它。如果不想用了,可以在vc 安裝目錄下common/msdev98/目錄中刪除該wizard中.awx和 .pdb文件。
12:如何在源文件中定位光標(biāo)到對(duì)稱(chēng)的{ }和 #if, #endif ?
前者使用ctrl和 “} ”鍵 ,后者使用ctrl和“k”鍵。
13:如何在vc中設(shè)置頭文件和庫(kù)文件?
除了vc缺省頭文件和庫(kù)文件外,如果經(jīng)常要用到第三方的頭文件和庫(kù)文件可以在tools options 的中設(shè)置。如果只是本項(xiàng)目要用到,可以在project setting->link object/library modules中設(shè)置庫(kù)文件。
14:如果讓控制臺(tái)應(yīng)用程序支持mfc類(lèi)庫(kù)?
可以在控制臺(tái)應(yīng)用程序中include 來(lái)引入mfc庫(kù),但是控制臺(tái)應(yīng)用程序缺省是單線程的,mfc是多線程的,為解決該矛盾,在project setting->c/c++ 選項(xiàng),選擇code ,在use run-time library 下拉框中選擇debug 。
15:如何為一個(gè)mfc應(yīng)用程序添加odbc功能?
(1)在文件stdafx.h文件末尾添加下面一行:
#include // mfc odbc classes
(2)在文本模式下編輯rc文件(利用file->open as text 方式)
在下面的程序行(共有兩處)
#include "l.chs/.rc" // /print preview
添加下一行:
#include "l.chs/afxdb.rc" //
16:數(shù)據(jù)庫(kù)表修改后,如何快速更新一個(gè)綁定到表的記錄集?
利用 中 member 標(biāo)簽下選中記錄集類(lèi)后,利用和bind all。
17:如何漢化只有可執(zhí)行代碼的.exe 文件?
在nt 下利用vc open file 以方式打開(kāi)*.exe 文件,直接修改資源文件,然后保存即可。
18:我怎樣才能建立一個(gè)等待光標(biāo)?
調(diào)用函數(shù)來(lái)啟動(dòng)等待光標(biāo),調(diào)用函數(shù) 來(lái)結(jié)束等待光標(biāo)。要注意,二者都要調(diào)用App的成員函數(shù),如下所示:
()->(); // 要做的事 ()->();
19:什么是? 我該怎樣用它?
是一個(gè)32-bit整型數(shù)值,它代表了一種顏色。你可以使用RGB函數(shù)來(lái)初始化。
例如: color = RGB(0, 255, 0); RGB函數(shù)接收三個(gè)0-255數(shù)值,一個(gè)代表紅色,一個(gè)代表綠色,一個(gè)代表藍(lán)色。在上面的例子中,紅色和藍(lán)色值都為0,所以在該顏色中沒(méi)有紅色和藍(lán)色。綠色為最大值255。所以該顏色為綠色。0,0,0為黑色,255,255,255為白色。
20:我在我的程序中是了。我向它添加了約10,000個(gè)整數(shù),這使得它變得非常非常慢。
是很好用的,只是因?yàn)槟銢](méi)有指定數(shù)組的最大尺寸。
因此,當(dāng)你添加新元素時(shí),該類(lèi)會(huì)從堆中重新分配空間。不幸的是,該類(lèi)會(huì)在每次插入新元素時(shí)都為數(shù)組重新分配空間。如果你向它添加了很多新元素,所有這些分配和復(fù)制數(shù)組的操作會(huì)就會(huì)使它變慢。
解決該問(wèn)題的方法是,你可以使用SetSize 函數(shù)的第二個(gè)參數(shù)來(lái)改變這種重新分配的頻率。例如,如果你把該參數(shù)設(shè)置為500 ,則每次數(shù)組空間超出時(shí)它才重新分配并添加500個(gè)新空間,而不是1個(gè)。這樣一來(lái) ,你就可以不用重新分配而添加了另外499個(gè)元素空間,這也會(huì)大大提高程序的運(yùn)行速度。
21:所產(chǎn)生的STDAFX文件是干什么用的?
它主要是協(xié)助產(chǎn)生預(yù)編譯頭文件的。通常你是不需要修改它的。
22:在我的程序的某些部分,我可以調(diào)用 函數(shù)來(lái)建立一個(gè)信息對(duì)話框,例如在視類(lèi)中。但是,在其它部分我卻不能,如文檔類(lèi)中。為什么?我怎樣才能在我的應(yīng)用程序類(lèi)中建立一個(gè)信息對(duì)話框?
函數(shù)來(lái)自CWnd類(lèi),所以你只能在從CWnd繼承的類(lèi)(如CView)中調(diào)用它。但是,MFC也提供了函數(shù),你可以在任何地方調(diào)用它。
23:我需要在我的程序中設(shè)置全局變量,以使文檔中的所有類(lèi)都能訪問(wèn)。我應(yīng)該把它放到哪兒?
把該變量放到該應(yīng)用程序類(lèi)的頭文件中的處。然后,在程序的任何地方,你都可以用下面的方法來(lái)訪問(wèn)該變量:
CMyApp *m_App = (CMyApp *)();
m_App-> = ...;
24:我聽(tīng)說(shuō)MFC可以發(fā)現(xiàn)內(nèi)存漏洞,我怎樣使用該特性?
如果你在Debug菜單中的Go選項(xiàng)(不是Project菜單中的Execute選項(xiàng))來(lái)運(yùn)行你的應(yīng)用程序,MFC應(yīng)該在程序終止時(shí)報(bào)告內(nèi)存漏洞。如果沒(méi)有,那么試試運(yùn)行MFC Tracer 工具程序(在VC++程序組中),并啟動(dòng)跟蹤。然后返回應(yīng)用程序。
25:我怎樣才能在我的應(yīng)用程序中循環(huán)瀏覽已經(jīng)打開(kāi)的文檔?
使用中未公開(kāi)的()和()函數(shù)。
26:我怎樣才能在我的應(yīng)用程序中循環(huán)瀏覽已經(jīng)打開(kāi)的視?
使用中未公開(kāi)的()和()函數(shù)。
27:虛擬函數(shù)是干什么用的?
允許你在調(diào)用之前來(lái)改變窗口屬性。
28:我應(yīng)該怎樣防止MFC在窗口標(biāo)題欄上添加文檔名?
在函數(shù)中刪除標(biāo)志的窗口樣式:
cs.style &= ~ ;
29:我應(yīng)該怎樣防止MFC在窗口標(biāo)題欄上把文檔名預(yù)置成應(yīng)用程序名?
在函數(shù)中刪除標(biāo)志的窗口樣式:
cs.style &= ~;
30:我有一無(wú)模式對(duì)話框。我怎樣才能在窗口退出時(shí)刪除CDialog對(duì)象?
把“delete this”加到中。這主要用在需要自動(dòng)刪除對(duì)象的場(chǎng)合。
31:為什么把“delete this”放在中而不是?
只被已建立的窗口調(diào)用。如果建立窗口失敗(如), 則沒(méi)有窗口處來(lái)發(fā)送消息。是在對(duì)象窗口被完全刪除, 在后,甚至在窗口建立失敗之后調(diào)用的。
32:File菜單中的MRU列表是從哪兒來(lái)的?列表中的名字放在哪兒了?我怎樣才能改變列表中項(xiàng)目的最大值?
在應(yīng)用程序類(lèi)的函數(shù)中對(duì)gs的調(diào)用中。該調(diào)用接受一個(gè)參數(shù)(在缺省情況下如果沒(méi)有傳遞值則為4)。MRU文件名是從INI文件中調(diào)用的。如果你有帶有的ID的菜單選項(xiàng),它會(huì)為調(diào)入的MRU列表所替換。如果你改變傳遞給gs的數(shù)值(最大為16),則你就改變了所裝如文件名的最大值。
33:使用中文VC(VC++在中文平臺(tái)下可以使用中文,但編譯后那些按鈕上的、對(duì)話框上的中文都成ASCII碼了)
因?yàn)閂C++在安裝時(shí)是默認(rèn)按單字節(jié)字符安裝的,而中文字符是雙字節(jié)編碼,自然就不能正確顯示了。
解決方法:
將VC++光盤(pán)上//BIN/IDE路徑下的中文資源語(yǔ)言模塊.dll拷貝至硬盤(pán)//BIN/IDE路徑下即可。
34: 位圖按鈕的使用(可產(chǎn)生動(dòng)態(tài)效果)
選定要使用位圖的按鈕(以O(shè)K按鈕為例,假設(shè)其標(biāo)識(shí)符為IDOK),選其屬性中的Owner draw選項(xiàng)(必須),此時(shí),在對(duì)話框編輯器中就可看到原先顯示在按鈕上的字符都消失了。將按鈕的Caption改為OK(必須為大寫(xiě))。打開(kāi)Insert菜單,單擊其中的選項(xiàng),隨后選擇Bitmap。再按下Import(導(dǎo)入)按鈕,將所需位圖導(dǎo)入項(xiàng)目(Project)。在 View窗口中通過(guò)右鍵單擊剛才導(dǎo)入的位圖,將其ID(標(biāo)識(shí)符)改為“OKU”(注意:字符必須為大寫(xiě))
雙引號(hào)及字母U必不可少。
字母U代表的按鈕為按下?tīng)顟B(tài)時(shí)所顯示的位圖。
此外還可使用后綴D、F、X,分別表示按下、擁有輸入焦點(diǎn)時(shí)、按鈕處于無(wú)效狀態(tài)時(shí)所顯示的位圖。通過(guò)對(duì)同一個(gè)按鈕的不同狀態(tài)使用不同的位圖,很容易做出具有動(dòng)態(tài)效果的按鈕。
當(dāng)將按鈕所需使用的位圖導(dǎo)入到項(xiàng)目中后,就應(yīng)該在使用位圖按鈕的那個(gè)對(duì)話框的類(lèi)聲明文件中加入位圖按鈕變量的定義 m_OK。在用到Bitmap處,加入如下語(yǔ)句:
.()
使程序在運(yùn)行時(shí)將位圖裝入內(nèi)存并顯示。
至此,創(chuàng)建位圖按鈕的整個(gè)步驟即告結(jié)束。
35:通用對(duì)話框的使用
大家都遇到過(guò)文件對(duì)話框吧,它的參數(shù)讓人頭疼.下面解除大家的頭疼.
先在使用文件對(duì)話框的類(lèi)的類(lèi)定義文件中加入對(duì)象定義 (TRUE,"avi","*.avi")。隨后,在需要使用該對(duì)話框的地方加入以下語(yǔ)句:
.Domodal();
就可以預(yù)覽所有.avi文件.
其調(diào)用規(guī)則為:
函數(shù)原型:
(BOOL ,LPCTSTR =NULL,LPCTSTR =NULL,DWORD dwFlags = | OMPT,LPCTSTR =NULL,CWnd *
=NULL);
參數(shù)說(shuō)明:
:為T(mén)RUE或FALSE。TRUE為打開(kāi)文件;FALSE為保存文件。
:為缺省的擴(kuò)展名。
:為顯示在文件名組合框的編輯框的文件名,一般可選NULL
dwFlags :為對(duì)話框風(fēng)格,一般為 | ,即隱藏只讀選項(xiàng)和覆蓋已有文件前提示。
:為下拉列表樞中顯示文件類(lèi)型。
:一般可選NULL。
例如:在文件類(lèi)型列表框的編輯框要顯示“可執(zhí)行文件(*.exe)”,而在它的下拉列表框中列出“視頻文件(*.avi)、All Files(*.*)”內(nèi)容,則變量定義如下: (TRUE,"exe",NULL, | ,"可執(zhí)行文件(*.exe) | *.exe|視頻文件(*.bat) | *.bat |All Files (*.*) | *.* ||",NULL);
注:看看沒(méi)有*.*后的||會(huì)是什么效果.
36:怎樣添加無(wú)基類(lèi)的類(lèi)?
在中右鍵選new class,class type選 Generic Class,填上Class Name就可以了。
37:如何定義基于CObject的類(lèi)?
按照問(wèn)題4生成新類(lèi),手動(dòng)在新類(lèi)的頭文件的class 后加上:public CObject.
形式如下:
class : public CObject
即可.
打開(kāi)資源文件中的菜單模板。打開(kāi)新菜單選項(xiàng)的屬性對(duì)話框。在對(duì)話框的底部的Prompt編輯框中,你可以如下指定狀態(tài)欄上的提示信息和工具欄上的提示信息 (如果你已經(jīng)建立的工具欄按鈕): Status bar string/nFlying tag
38:給控件設(shè)置焦點(diǎn)的兩個(gè)方法
1.變量
m_edit1.();
2.控件ID
()->();
39:設(shè)置菜單某項(xiàng)的字體為粗體
CMenu* = ()->GetMenu();
CMenu* = NULL;
int i;
for (i=0; (); i++)
= ->(i);
if ( && ->(0) == )
break;
::(->m_hMenu,0,TRUE);
比如要對(duì)界面里的“最小”選項(xiàng)進(jìn)行操作,只要設(shè)置 1 1 就行了.
40:下載網(wǎng)絡(luò)文件到IE臨時(shí)文件夾
CString ;
if(FAILED(le(NULL,
"",//我主頁(yè)上的一個(gè)文件
.(),
,
0,
NULL)))
("Cannot file");
return;
else
();
就是文件路徑,可以指教進(jìn)行操作
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。