上一節(jié)雞啄米講了
顏色對話框之后,關(guān)于對話框的使用和各種通用對話框的介紹就到此為止了。從本節(jié)開始雞啄米將講解各種常用控件的用法。常用控件主要包括:靜態(tài)文本框、編輯框、單選按鈕、復(fù)選框、分組框、列表框、組合框、圖片控件、列表控件、樹形控件和進(jìn)度條控件等等。本節(jié)教程先來講解靜態(tài)文本框的使用。
控件的通知消息
在將靜態(tài)文本框的使用之前,先大概講講控件的通知消息。
當(dāng)控件有事件發(fā)生時(shí),它會(huì)向父窗口發(fā)送通知消息。最常發(fā)生的事件就是鼠標(biāo)單擊了,此時(shí)控件會(huì)向父窗口發(fā)送BN_CLICKED消息,實(shí)際上也就是給父窗口發(fā)送WM_COMMAND消息,在wParam參數(shù)中包含有通知消息碼(鼠標(biāo)單擊時(shí)的通知消息碼就是BN_CLICKED)和控件ID,lParam參數(shù)中包含了控件的句柄。在
MFC消息映射機(jī)制概述中,雞啄米講過,消息就是由三個(gè)部分組成:消息值、wParam參數(shù)和lParam參數(shù)。
為控件通知消息添加消息映射和
消息處理函數(shù)的方法,之前不止一遍講過了。現(xiàn)在再來具體說明下,控件的消息映射宏的格式大致是:
ON_通知消息碼(nID, memberFun)
nID參數(shù)是控件的ID,memberFun參數(shù)是消息處理函數(shù)名。例如,ON_BN_CLICKED(IDC_BUTTON1, &CDlg::OnBnClickedButton1)。此消息映射宏應(yīng)添加到BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間。
消息處理函數(shù)聲明的語法形式為:
afx_msg void memberFun();
靜態(tài)文本框的使用
在前面雞啄米的舉例中,大家應(yīng)該也清楚了靜態(tài)文本框的一般作用,就是用于顯示文字說明。
MFC提供了CStatic類,封裝了對靜態(tài)文本框的所有操作。
如果我們想在程序中動(dòng)態(tài)創(chuàng)建靜態(tài)文本框,而不是像前面那樣直接從Toolbox中拖到對話框模板上,那么就需要使用CStatic類的成員函數(shù)Create。Create函數(shù)的原型如下:
virtual BOOL Create(
LPCTSTR lpszText,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID = 0xffff
);
參數(shù)說明:
lpszText:指定要在控件中顯示的文字。如果為NULL則不會(huì)顯示任何文字。
dwStyle:指定靜態(tài)控件的風(fēng)格。靜態(tài)文本框一般都是對話框或其他窗口的子窗口,而且是可見的,所以應(yīng)該包含WS_CHILD 和WS_VISIBLE風(fēng)格,另外,MSDN中說明,還可以為其設(shè)置“static control styles”中風(fēng)格的任意組合。下面大概為大家說明幾個(gè)風(fēng)格:
SS_BITMAP 一個(gè)位圖將顯示在靜態(tài)控件中,Create函數(shù)的lpszText參數(shù)字符串是資源文件中定義的位圖名。此風(fēng)格忽略寬度和高度參數(shù),靜態(tài)控件自動(dòng)調(diào)整它的尺寸來適應(yīng)位圖
SS_BLACKFRAME 指定一個(gè)具有與窗口邊界同色的框,默認(rèn)為黑色
SS_BLACKRECT 指定一個(gè)具有與窗口邊界同色的實(shí)矩形,默認(rèn)為黑色
SS_CENTER 使顯示的正文居中對齊,正文可以換行
SS_GRAYFRAME 指定一個(gè)具有與屏幕背景同色的邊框
SS_GRAYRECT 指定一個(gè)具有與屏幕背景同色的實(shí)矩形
SS_ICON 使控件顯示一個(gè)在資源中定義的圖標(biāo),圖標(biāo)的名字由Create 函數(shù)的lpszText 參數(shù)指定,圖標(biāo)自動(dòng)調(diào)整它的尺寸
SS_LEFT 左對齊正文,正文能回繞
SS_LEFTNOWORDWRAP 左對齊正文,正文不能回繞
SS_NOTIFY 使控件能向父窗口發(fā)送鼠標(biāo)事件消息
SS_RIGHT 右對齊正文,可以回繞
SS_SIMPLE 使靜態(tài)正文在運(yùn)行時(shí)不能被改變并使正文顯示在單行中
SS_WHITEFRAME 指定一個(gè)具有與窗口背景同色的框,默認(rèn)為白色
SS_WHITERECT 指定一個(gè)具有與窗口背景同色的實(shí)心矩形,默認(rèn)為白色
我們在對話框模板添加靜態(tài)文本框時(shí),可以在靜態(tài)文本框的屬性頁中設(shè)置它的風(fēng)格,很多都與上面的風(fēng)格是對應(yīng)的,例如,Simple屬性就相當(dāng)于SS_SIMPLE風(fēng)格。
rect:指定靜態(tài)控件的位置和大小,它可以是RECT結(jié)構(gòu)體類型,也可以是CRect類的對象。
pParentWnd:指定靜態(tài)控件的父窗口,通常是一個(gè)CDialog對象,不能是NULL。
nID:指定靜態(tài)控件的ID。
CStatic類的成員函數(shù)簡介
簡單介紹下CStatic類的主要成員函數(shù),下面是成員函數(shù)列表。
GetBitmap 獲取由SetBitmap函數(shù)設(shè)置的位圖的句柄
GetCursor 獲取由SetCurSor設(shè)置的光標(biāo)的句柄
GetEnhMetaFile 獲取由SetEnhMetaFile設(shè)置的增強(qiáng)圖元文件的句柄
GetIcon 獲取由SetIcon設(shè)置的圖標(biāo)的句柄
SetBitmap 設(shè)置要在靜態(tài)控件中顯示的位圖
SetCursor 設(shè)置要在靜態(tài)控件中顯示的光標(biāo)圖片
SetEnhMetaFile 設(shè)置要在靜態(tài)控件中顯示的增強(qiáng)圖元文件
SetIcon 設(shè)置要在靜態(tài)控件中顯示的圖標(biāo)
除了上述成員函數(shù)外,由于CStatic是CWnd的派生類,CWnd的很多成員函數(shù)也可以使用,例如,GetWindowText、GetWindowRect、SetWindowText等。
靜態(tài)文本框的基本應(yīng)用方法在前面已經(jīng)講過,雞啄米就不再舉例,大家可以根據(jù)本節(jié)所講進(jìn)行試驗(yàn),以對靜態(tài)文本框有更多的認(rèn)識(shí)。歡迎大家來雞啄米交流學(xué)習(xí)。