上一節講了顏色對話方塊之後,關於對話方塊的使用和各種通用對話方塊的介紹就到此為止了。從本節開始雞啄公尺將講解各種常用控制項的用法。常用控制項主要包括:靜態文字框、編輯框、單選按鈕、核取方塊、分組框、列表框、組合框、控制項、列表控制項、樹形控制項和進度條控制項等等。本節教程先來講解靜態文字框的使用。
xtreme toolkit pro是屢獲殊榮的vc介面庫,是mfc開發中最全面介面控制項套包,它提供了windows開發所需要的11種主流的visual c++ mfc控制項,包括command bars、controls、chart pro、calendar、docking pane、property grid、report control、shortcut bar、syntax edit、skin framework 和task panel。
控制項的通知訊息
在將靜態文字框的使用之前,先大概講講控制項的通知訊息。
當控制項有事件發生時,它會向父視窗傳送通知訊息。最常發生的事件就是滑鼠單擊了,此時控制項會向父視窗傳送bn_clicked訊息,實際上也就是給父視窗傳送wm_command訊息,在wparam引數中包含有通知訊息碼(滑鼠單擊時的通知訊息碼就是bn_clicked)和控制項id,lparam引數中包含了控制項的控制代碼。在mfc訊息對映機制概述中,講過,訊息就是由三個部分組成:訊息值、wparam引數和lparam引數。
為控制項通知訊息新增訊息對映和訊息處理函式的方法,之前不止一遍講過了。現在再來具體說明下,控制項的訊息對映巨集的格式大致是:
on_通知訊息碼(nid, memberfun)
nid引數是控制項的id,memberfun引數是訊息處理函式名。例如,on_bn_clicked(idc_button1, &cdlg::onbnclickedbutton1)。此訊息對映巨集應新增到begin_message_map和end_message_map之間。
訊息處理函式宣告的語法形式為:
afx_msg void memberfun();
靜態文字框的使用
在前面的舉例中,大家應該也清楚了靜態文字框的一般作用,就是用於顯示文字說明。mfc提供了cstatic類,封裝了對靜態文字框的所有操作。
如果我們想在程式中動態建立靜態文字框,而不是像前面那樣直接從toolbox中拖到對話方塊模板上,那麼就需要使用cstatic類的成員函式create。create函式的原型如下:
virtual bool create(
lpctstr lpsztext,
dword dwstyle,
const rect& rect,
cwnd* pparentwnd,
uint nid = 0xffff
);
引數說明:
lpsztext:指定要在控制項中顯示的文字。如果為null則不會顯示任何文字。
dwstyle:指定靜態控制項的風格。靜態文字框一般都是對話方塊或其他視窗的子視窗,而且是可見的,所以應該包含ws_child 和ws_visible風格,另外,msdn中說明,還可以為其設定「static control styles」中風格的任意組合。下面大概為大家說明幾個風格:
ss_bitmap
乙個點陣圖將顯示在靜態控制項中,create函式的lpsztext引數字串是資源檔案中定義的位圖名。此風格忽略寬度和高度引數,靜態控制項自動調整它的尺寸來適應位圖
ss_blackframe
指定乙個具有與視窗邊界同色的框,預設為黑色
ss_blackrect
指定乙個具有與視窗邊界同色的實矩形,預設為黑色
ss_center
使顯示的正文居中對齊,正文可以換行
ss_grayframe
指定乙個具有與螢幕背景同色的邊框
ss_grayrect
指定乙個具有與螢幕背景同色的實矩形
ss_icon
使控制項顯示乙個在資源中定義的圖示,圖示的名字由create 函式的lpsztext 引數指定,圖示自動調整它的尺寸
ss_left
左對齊正文,正文能迴繞
ss_leftnowordwrap
左對齊正文,正文不能迴繞
ss_notify
使控制項能向父視窗傳送滑鼠事件訊息
ss_right
右對齊正文,可以迴繞
ss_******
使靜態正文在執行時不能被改變並使正文顯示在單行中
ss_whiteframe
指定乙個具有與視窗背景同色的框,預設為白色
ss_whiterect
指定乙個具有與視窗背景同色的實心矩形,預設為白色
我們在對話方塊模板新增靜態文字框時,可以在靜態文字框的屬性頁中設定它的風格,很多都與上面的風格是對應的,例如,******屬性就相當於ss_******風格。
rect:指定靜態控制項的位置和大小,它可以是rect結構體型別,也可以是crect類的物件。
pparentwnd:指定靜態控制項的父視窗,通常是乙個cdialog物件,不能是null。
nid:指定靜態控制項的id。
cstatic類的成員函式簡介
簡單介紹下cstatic類的主要成員函式,下面是成員函式列表。
getbitmap
獲取由setbitmap函式設定的點陣圖的控制代碼
getcursor
獲取由setcursor設定的游標的控制代碼
getenhmetafile
獲取由setenhmetafile設定的增強圖元檔案的控制代碼
geticon
獲取由seticon設定的圖示的控制代碼
setbitmap
設定要在靜態控制項中顯示的點陣圖
setcursor
設定要在靜態控制項中顯示的游標
setenhmetafile
設定要在靜態控制項中顯示的增強圖元檔案
seticon
設定要在靜態控制項中顯示的圖示
除了上述成員函式外,由於cstatic是cwnd的派生類,cwnd的很多成員函式也可以使用,例如,getwindowtext、getwindowrect、setwindowtext等。
《VS2010 MFC程式設計入門教程》 讀書筆記
推薦兩個比較好的學習 mfc全稱microsoft foundation classes windows sdk software development kit,軟體開發工具包 new project win32 project是win32程式,empty project是空程式,mfc dll用...
VS2010 MFC程式設計入門教程之目錄和總結
部落格。一 vs2010 mfc程式設計入門教程之目錄 第一部分 vs2010 mfc開發環境 vs2010 mfc程式設計入門之前言 vs2010 mfc程式設計入門之一 vs2010與msdn安裝過程 第二部分 vs2010 mfc應用程式框架 vs2010 mfc程式設計入門之二 利用mfc嚮...
VS2010 MFC程式設計入門教程之目錄和總結
雞啄公尺的這套vs2010 mfc程式設計入門教程到此就全部完成了,雖然有些內容還未涉及到,但幫助大家進行vs2010 mfc的入門學習業已足夠。以此教程的知識為基礎,學習vs2010 mfc較為深入的內容已非難事。作為本教程的最後一課,雞啄公尺將對前面所講內容進行目錄歸納,並對這八個月加班加點的努...