下面我們?yōu)榘粹o添加代碼.
雙擊按鈕,會(huì)出現(xiàn)以下的提示框.
按[OK]為按鈕添加響應(yīng)函數(shù),出面以下畫(huà)面
void CEg01Dlg::OnBtn1()
{
// TODO: Add your control notification handler code here
}
這一段就是剛才按鈕的函數(shù)了.當(dāng)然,現(xiàn)在還沒(méi)有響應(yīng).現(xiàn)在我們添加一個(gè)事件,讓這個(gè)按鈕按下后上面的靜態(tài)文本框的內(nèi)容變?yōu)椤贝谔?hào):COM1 波特率:57600”把上面的代碼改為
void CEg01Dlg::OnBtn1()
{
// TODO: Add your control notification handler code here
SetDlgItemText(IDC_FIRSTLABEL,” 串口號(hào):COM1 波特率:57600”);
}
添加完成以后,按F7編譯.如果編譯通過(guò),按F5運(yùn)行,可以看到程序運(yùn)行后的對(duì)話框
按下按鈕,可以看到上面的靜態(tài)文本框的內(nèi)容改變了.那么恭喜你,完成我們這個(gè)例子的第一步操作了.
當(dāng)然,我這里的對(duì)話框看起來(lái)沒(méi)那么高,大家可以調(diào)一下高度.怎么退回到控件編輯狀態(tài)呢?
首先,我們單擊選項(xiàng)卡中的[ResorceView],現(xiàn)在大家只能看到[Reso…]看到IDD_EG01_DIALG了吧,這個(gè)其實(shí)也是一個(gè)ID,是我們對(duì)話框的ID,如果大家改一下對(duì)話框的ID,就可以看到這里的ID也變了.在VC中,所有的控件都認(rèn)為是窗體,只是形式不同.雙擊IDD_EG01_DIALG就可以看到我們剛才的控制編輯狀態(tài)了.雙擊[顯示]按鈕又可以回到代碼狀態(tài).
剛才的例子很簡(jiǎn)單,卻是我們以后會(huì)用得最多的.下面我們來(lái)分析一下代碼
void CEg01Dlg::OnBtn1()
{
// TODO: Add your control notification handler code here
SetDlgItemText (IDC_FIRSTLABEL,” 串口號(hào):COM1 波特率:57600”);
}
看看SetDlgItemText這個(gè)函數(shù),大家就會(huì)明白了, IDC_FIRSTLABEL是我們給靜態(tài)文本框分配的ID,后面的參數(shù)是要顯示的內(nèi)容.上面我們提到過(guò),VC中的控件都認(rèn)為是窗體,所以,對(duì)于所有的文本顯示,我們都可以用這個(gè)函數(shù)來(lái)做,大家可以試著加入一個(gè)編輯框(Edit),同樣可以使用用這個(gè)函數(shù),只要ID號(hào)對(duì)了就可以了.VC對(duì)大小寫(xiě)敏感,大家要注意大小寫(xiě).
下面我們用另一個(gè)方法來(lái)實(shí)現(xiàn).
把代碼改為
void CEg01Dlg::OnBtn1()
{
// TODO: Add your control notification handler code here
CString a;
a=” 串口號(hào):COM1 波特率:57600”;
SetDlgItemText (IDC_FIRSTLABEL,a);
}
然后按F7編譯,無(wú)誤則按F5運(yùn)行.可以看到運(yùn)行結(jié)果是一樣的.
大家可以看到,我們把變量a定義為CString類型,這個(gè)類型我們?cè)贑中可能沒(méi)有見(jiàn)過(guò).CString
其實(shí)是VC中的一個(gè)類.這里我們要引入類的概念了.類跟C語(yǔ)言結(jié)構(gòu)體很像,結(jié)構(gòu)體可以有成員變量,但不能有成員函數(shù),類不但可以有成員變量,還可以有成員函數(shù),并且支持多種方法.在VC中,類以class標(biāo)識(shí).下面是一個(gè)類的定義,我們來(lái)分析一下.
class CEg01Dlg : public CDialog
{
public:
CString GetPath(void);
protected:
int GetMax(int a,int b);
public:
int a;
int b;
};
這個(gè)類是我改過(guò)的,為了大家看得明白一點(diǎn).首先,我們從這句class CEg01Dlg : public CDialog知道這個(gè)類名是CEg01Dlg,那么public后面的CDialog是什么意思呢?CDialog其實(shí)也是一個(gè)類,是VC中標(biāo)準(zhǔn)對(duì)話框類. public CDialog意思是我們定義的這個(gè)類CEg01Dlg從CDialog派生,也叫從CDialog繼承,從繼承這個(gè)詞語(yǔ)大家就會(huì)明白CEg01Dlg不但可以有自身函數(shù),而且還可以用到CDialog里的變量及函數(shù),所以說(shuō)是繼承,就像我們說(shuō)的繼承財(cái)產(chǎn)一樣,兒子不但可以有自己的錢(qián),還有從老爸那里繼承的產(chǎn)財(cái),這些錢(qián)都能花.所以,我們也叫CDialog為父類(不是爸類啊),把CEg01Dlg稱為子類.當(dāng)然,這是相對(duì)的.如果再定義一個(gè)類從CEg01Dlg派生,那么CEg01Dlg也就是父類,派生出來(lái)的類就是子類.這段可能有點(diǎn)難明白,大家可以慢慢體會(huì).我們?cè)倩氐紺String上面來(lái),這個(gè)類不是派生的,所以也沒(méi)有父類了.用CString定義一個(gè)變量a,我們稱為類變量,CString有很強(qiáng)大的功能,我們這里只用到一個(gè)功能,就是字符串,a可以是一個(gè)不定長(zhǎng)度的字符串,所以我們可以給a賦一個(gè)任意的字符串而不用關(guān)心長(zhǎng)度.當(dāng)然,我們也可以用int StringLen=a.GetLength();來(lái)獲得這個(gè)字符串的長(zhǎng)度.從這句可以看到,GetLength()是類CString里的一個(gè)函數(shù).大家可能又會(huì)關(guān)心一個(gè)問(wèn)題,怎么把長(zhǎng)度顯示出來(lái)呢?我們把代碼改為
void CEg01Dlg::OnBtn1()
{
// TODO: Add your control notification handler code here
CString a;
a=" 串口號(hào):COM1 波特率:57600";
SetDlgItemText (IDC_FIRSTLABEL,a);
a.Format("字符串的長(zhǎng)度:%d",a.GetLength());
MessageBox(a);
}
運(yùn)行一下,效果如下
這里我們用到了類Cstring的另一個(gè)成員函數(shù)Format();這個(gè)函數(shù)用起來(lái)跟C語(yǔ)言里的Printf()很像,我就不多說(shuō)明了.格式化后的字符串還是存放在a中,在這里,我們還用到了一個(gè)新的函數(shù)MessageBox();我們只是用了這個(gè)函數(shù)最簡(jiǎn)單的用法,顯示一個(gè)字符串.MessageBox用于彈出一個(gè)提示對(duì)話框.查查MSDN就知道,函數(shù)原型是
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
在VC里面,函數(shù)可以有默認(rèn)值,例如LPCTSTR lpszCaption = NULL, UINT nType = MB_OK變量lpszCaption的默認(rèn)值是NULL, nType的默認(rèn)值是MB_OK,這些有默認(rèn)值的變量我們可以不傳值,所以這個(gè)函數(shù)使用時(shí),最簡(jiǎn)單的用法就是傳lpszText就可以了.如果我們要顯示一個(gè)固定的字串,可以這樣調(diào)用MessageBox(“大家好”);是不是很簡(jiǎn)單啊?
這一章就寫(xiě)到這里了,一些問(wèn)題大家可以提.未盡知識(shí)點(diǎn),會(huì)在以后再詳細(xì)介紹.