1. 程式人生 > >VS2013/MFC程式設計入門之十九(常用控制元件:靜態文字框)

VS2013/MFC程式設計入門之十九(常用控制元件:靜態文字框)

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。

       控制元件的通知訊息

       在將靜態文字框的使用之前,先大概講講控制元件的通知訊息。

       當控制元件有事件發生時,它會向父視窗傳送通知訊息。最常發生的事件就是滑鼠單擊了,此時控制元件會向父視窗傳送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中說明,還可以為其設定“靜態文字控制元件格式”中風格的任意組合。下面大概為大家說明幾個風格:

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_SIMPLE 使靜態正文在執行時不能被改變並使正文顯示在單行中
SS_WHITEFRAME 指定一個具有與視窗背景同色的框,預設為白色
SS_WHITERECT 指定一個具有與視窗背景同色的實心矩形,預設為白色

       我們在對話方塊模板新增靜態文字框時,可以在靜態文字框的屬性頁中設定它的風格,很多都與上面的風格是對應的,例如,Simple屬性就相當於SS_SIMPLE風格。

       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等。

       靜態文字框的基本應用方法在前面已經講過,本教程就不再舉例,大家可以根據本節所講進行試驗,以對靜態文字框有更多的認識。歡迎大家來本部落格留言進行交流學習。

相關推薦

VS2013/MFC程式設計入門常用控制元件靜態文字

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。        控制元件的通知訊息

VS2013/MFC程式設計入門二十三常用控制元件列表控制元件ListBox

前面兩節講了比較常用的按鈕控制元件,並通過按鈕控制元件例項說明了具體用法。本文要講的是列表框控制元件(ListBox)及其使用例項。        列表框控制元件簡介        列表框給出了一個選項清單,允許使用者從中進行單項或多項選擇,被選中的項會高亮顯示。列表

VS2013/MFC程式設計入門對話方塊檔案對話方塊

上一講介紹的是訊息對話方塊,本節講解檔案對話方塊。        檔案對話方塊的分類 檔案對話方塊分為開啟檔案對話方塊和儲存檔案對話方塊,相信大家在Windows系統中經常見到這兩種檔案對話方塊。例如,很多編輯軟體像記事本等都有“開啟”選項,選擇“開啟”後會彈出一個對

VS2013/MFC程式設計入門對話方塊屬性頁對話方塊及相關類的介紹

本節開始講一種特殊的對話方塊--屬性頁對話方塊。        屬性頁對話方塊的分類        屬性頁對話方塊想必大家並不陌生,XP系統中桌面右鍵點屬性,彈出的就是屬性頁對話方塊,它通過標籤切換各個頁面。另外,我們在建立MFC工程時使用的嚮導對話方塊也屬於屬性頁對

VS2013/MFC程式設計入門對話方塊訊息對話方塊

       本節講解Windows系統中最常用最簡單的一類對話方塊--訊息對話方塊。        我們在使用Windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以MFC提供了兩個函式可以直接生成指

VS2013/MFC程式設計入門對話方塊非模態對話方塊的建立及顯示

 上一節講了模態對話方塊及其彈出過程,本節接著講另一種對話方塊--非模態對話方塊的建立及顯示。        前面已經說過,非模態對話方塊顯示後,程式其他視窗仍能正常執行,可以響應使用者輸入,還可以相互切換。本文中將上一講中建立的Tip模態對話方塊改為非模態對話方塊,讓

VS2013/MFC程式設計入門常用控制元件圖片控制元件Picture Control

本節主要講一種簡單實用的控制元件,圖片控制元件Picture Control。通過使用圖片控制元件我們可以在介面某個位置顯示圖片以美化介面。        圖片控制元件簡介        圖片控制元件和前面講到的靜態文字框都是靜態文字控制元件,因此兩者的使用方法有很多

VS2013/MFC程式設計入門常用控制元件列表檢視控制元件List Control 上

      本節為大家詳解列表檢視控制元件List Control的使用。      列表檢視控制元件簡介        列表檢視控制元件List Control同樣比較常見,它能夠把任何字串內容以列表的方式顯示出來,這種顯示方式的特點是整潔、直觀,在實際應用中能為使

VS2013/MFC程式設計入門常用控制元件標籤控制元件Tab Control

前面兩節講了樹形控制元件Tree Control,本節開始講解標籤控制元件Tab Control,也可以稱為選項卡控制元件。        標籤控制元件簡介        標籤控制元件也比較常見。它可以把多個頁面整合到一個視窗中,每個頁面對應一個標籤,使用者點選某個標

VS2013/MFC程式設計入門常用控制元件組合控制元件Combo Box

 上一節講了列表框控制元件ListBox的使用,本節主要講解組合框控制元件Combo Box。組合框同樣相當常見,例如,在Windows系統的控制面板上設定語言或位置時,有很多選項,用來進行選擇的控制元件就是組合框控制元件。        組合框控制元件簡介     

VS2013/MFC程式設計入門選單VS2013選單資源詳解

前面我們已經講完了所有的常用控制元件,本節開始為大家講解選單的概念及使用。        選單簡介        選單可以分為下拉式選單和彈出式選單。        下拉式選單一般在視窗標題欄下面顯示,大家還記得我們在VS2013/MFC程式設計入門之一(利用MFC

VS2013/MFC程式設計入門對話方塊為對話方塊新增控制元件

建立對話方塊資源需要建立對話方塊模板、修改對話方塊屬性、為對話方塊新增各種控制元件等步驟,前面一講中已經講了建立對話方塊模板和修改對話方塊屬性,本節繼續講如何為對話方塊新增控制元件。        上一講中建立了一個名為“Addition”的工程,目的是生成一個實現加法

VS2013/MFC程式設計入門對話方塊建立對話方塊類和新增控制元件變數

前兩講中為大家講解了如何建立對話方塊資源。建立好對話方塊資源後要做的就是生成對話方塊類了。再宣告下,生成對話方塊類主要包括新建對話方塊類、新增控制元件變數和控制元件的訊息處理函式等。        因為給大家的例程Addition是基於對話方塊的程式,所以程式自動建立了

VS2013/MFC程式設計入門MFC應用程式框架分析

  上一講講的是VS2013應用程式工程中檔案的組成結構。這一節就為大家分析下MFC應用程式框架的執行流程。        一.SDK應用程式與MFC應用程式執行過程的對比        程式執行都要有入口函式,在之前的C++教程中都是main函式,而Windows應

VS2010/MFC程式設計入門四十三MFC常用CTime類和CTimeSpan類

轉載:   http://www.jizhuomi.com/software/230.html 上一節中雞啄米講了MFC常用類CString類的用法,本節繼續講另外兩個MFC常用類-日期和時間類CTime類和CTimeSpan類。    

MFC程式設計學習改變對話方塊和控制元件文字顏色

//程式訊息流:首先對話方塊繪製時,會發送WM_CTLCOLOR訊息,那麼OnCtlColor()函式 //將響應該訊息,程式將用該函式返回的畫刷對控制元件進行繪製。 HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtl

MFC基本控制元件使用——靜態文字(Static)

眾所周知,在MFC應用程式中,靜態文字框的使用可以說是必不可少。但是呢,就MFC提供的Static直接使用起來還是有一些小問題的。比如說: (1)當對話方塊有背景圖片或其他顏色的時候,靜態文字框會有很難看的灰色的背景顏色,所以這裡存在一個透明的問題; (2)如何怎麼

Java併發程式設計系列原子操作類

原子操作類簡介 當更新一個變數的時候,多出現資料爭用的時候可能出現所意想不到的情況。這時的一般策略是使用synchronized解決,因為synchronized能夠保證多個執行緒不會同時更新該變數。然而,從jdk 5之後,提供了粒度更細、量級更輕,並且在多核

VS2010/MFC程式設計入門前言

     VC++簡介       VC++全稱是Visual C++,是由微軟提供的C++開發工具,它與C++的根本區別就在於,C++是語言,而VC++是用C++語言編寫程式的工具平臺。VC++不僅是一個編譯器更是一個整合開發環境,包括編輯器、偵錯程式和編譯器等,一般它包含

Linux C編程1 libevent基本概念

通信 == socket通信 驅動 1.4 event http linu make 一、libevent是幹什麽的 1. 開源的庫, 提高開發效率 封裝了socket通信 封裝了IO多路轉接 2. 精簡, 專註於網絡, 性能高 3