CStatic
CObject
└CCmdTarget
└CWnd
└CStatic
CStatic類提供了一個Windows靜態控件的性能。一個靜態控件用來顯示一個文本字符串,框,矩形,圖標,光標,位圖,或增強的圖元文件。它可以被用來作為標簽,框,或用來分隔其它的控件。一個靜態控件不接收輸入,也不提供輸出;但是,如果它是用SS_NOTIFY風格創建的,則它可以通知其父有關設備點擊的消息。創建一個靜態控件分兩步。首先,調用構造函數來構造此CStatic對象,然后調用Create成員函數來創建此靜態控件並將它與該CStatic對象連接。如果你是在一個對話框中創建了一個靜態控件(通過一個對話框資源),則當用戶關閉這個對話框時,此CStatic對象被自動銷毀。如果你是在一個窗口中創建了一個CStatic對象,則必須由你來銷毀它。在一個窗口的堆棧中創建的CStatic對象將自動被銷毀。如果你是使用new函數在堆中創建CStatic對象,則當你使用完后,必須調用delete來銷毀這個CStatic對象。
#include<afxwin.h>
請參閱:
CWnd,CButton,CComboBox,CEdit,CListBox,CScrollBar,CDialog
CStatic類成員
構造
CStatic
構造一個CStatic對象
初始化
Create
創建Windows靜態控件並將它與該CStatic對象連接
操作符
SetBitmap
指定要在此靜態控件中顯示的位圖
GetBitmap
獲取先前用SetBitmap設置的位圖的句柄
SetIcon
指定一個要在此靜態控件中顯示的圖標
GetIcon
獲取先前用SetIcon設置的圖標的句柄
SetCursor
指定要顯示在此靜態控件中的光標圖像
GetCursor
獲取先前用SetCursor設置的光標圖像的句柄
SetEnhMetaFile
指定要顯示在此靜態控件中的增強的圖元文件
GetEnhMetaFile
獲取先前用SetEnhMetaFile設置的增強圖元文件的句柄
CEdit
CObject
└CCmdTarget
└CWnd
└CEdit
CEdit類提供了Windows編輯控件中的功能。編輯控件是一個子窗口矩形,用戶可以向其中輸入文本。
可以通過對話模板或直接從代碼中創建一個編輯控件。在兩種情形下,首先調用CEdit構造程序構造CEdit對象,再調用Create成員函數創建Windows編輯控件並將其與CEdit對象連接。
構造在CEdit的派生類中可以單步實現。為派生類編寫構造程序並從構造程序中調用Create。
CEdit從CWnd繼承了重要的功能,要在CEdit對象中設置或獲取文本,使用CWnd成員函數SetWindowText和GetWindowText,可以設置和得到編輯控件的全部內容,即使它是一個多行控件。如果編輯控件是多行的,使用CEdit成員函數GetLine,GetSel,GetSel和ReplaceSel來獲取和寫入控件的部分文本。
如果要處理編輯控件發往其父類(通常是一個CDialog派生類)的通知消息,則向父類中為每一消息添加一個消息映射入口和消息處理成員函數。
各消息映射入口可采用如下形式:
ON_Notification(id,memberFxn)
其中id指定了發送通知的編輯控件的子窗口ID,memberFxn為你寫好的處理通知的父成員函數的名字。
父函數形式如下:
afx_msgvoidmemberFxn();
下面是一組可能的消息映射入口,以及在何種情況下向父類發送的描述:
·
ON_EN_CHANGE
用戶采取的行動可能會改變編輯控件的文本。與EN_UPDATE通知消息不同,該通知是在Windows更新顯示之后發送的。
·
ON_EN_ERRSPACE
編輯控件不能為特定請求分配足夠的空間。
·
ON_EN_HSCROLL
用戶單擊了編輯控件中的水平滾動條,父窗口在屏幕更新之前被通知。
·
ON_EN_KILLFOCUS
編輯控件失去輸入焦點。
·
ON_EN_MAXTEXT
當前輸入超過了為編輯控件指定的數目,並作截尾處理。當編輯控件不具有ON_EN_HSCROLL風格且要輸入的字符會超過編輯控件的寬度時,發送消息。當編輯控件不具有ON_EN_VSCROLL風格且要輸入的字符會超過編輯控件的高度時,也會發送消息。
·
ON_EN_SETFOCUS
編輯控件獲得焦點。
·
ON_EN_UPDATE
編輯控件將要顯示變動的文本。在控件對文本格式化之后但在顯示文本之前發送消息,以便在必要時改變窗口尺寸。
·
ON_EN_VSCROLL
用戶單擊了編輯控件中的垂直滾動條,父窗口在屏幕更新之前被通知。
如果在對話框內創建CEdit對象,CEdit對象在用戶關閉對話框時自動被刪除。
如果使用對話框編輯器從對話資源中創建CEdit對象,CEdit對象在用戶關閉對話框時自動被刪除。
如果在窗口內創建CEdit對象,也需要刪除它。如果在棧上創建CEdit對象,它被自動刪除。如果使用new函數在堆上創建CEdit對象,在用戶中止編輯控件時,必須對其調用delete來刪除它。如果在CEdit對象中分配存儲空間,覆蓋CEdit析構程序來處理分配情況。
關於CEdit的更多信息,請參閱聯機文檔“VisualC++程序員指南”中的“控件主題”。
#include<afxwin.h>
請參閱:
CWnd,CButton,CComboBox,CListBox,CScrollBar,CStatic,CDialog
CEdit類的成員
構造函數
CEdit
構造一個CEdit控件對象
Create
創建一個Windows編輯控件,並將其與CEdit對象連接
屬性
CanUndo
決定一個編輯控件操作是否能夠被撤銷
GetLineCount
獲得多行編輯控件中的行數
GetModify
決定編輯控件的內容是否被修改
SetModify
為編輯控件設置或清除修改標記
GetRect
為編輯控件獲取格式化的矩形
GetHandle
獲得為當前多行編輯控件分配的內存的句柄
SetHandle
設置為多行編輯控件使用的本地內存的句柄
SetMargins
為CEdit設置左邊和右邊的空白邊界
GetMargins
獲得為CEdit設置左邊和右邊的空白邊界
SetLimitText
設置CEdit能夠容納的文本的最大量
GetLimitText
獲得CEdit能夠容納的文本的最大量
PosFromChar
獲得指定字符索引的左上角的坐標
CharFromPos
獲得最靠近指定位置的字符的行和字符索引
GetLine
從編輯控件中獲得一行文本
GetPasswordChar
獲得當用戶輸入文本時在編輯控件中顯示的口令
GetFirstVisibleLeLine
決定在編輯控件中最頂部的可視的行
操作
EmptyUndoBuffer
重新設置(清除)編輯控件的撤銷標記
FmtLines
設置在多行編輯控件中的軟回車打開或關閉
LimitText
用戶在輸入文本時的文本長度限制
LineFromChar
獲得包含指定字符索引的行的數目
LineIndex
獲得在多行編輯控件中的某行的字符索引
LineLength
獲得編輯控件中的行的長度
LineScroll
在多行編輯控件中滾動文本
ReplaceSel
用指定文本覆蓋編輯控件中當前被選中的文本
SetPasswordChar
設置或清除當用戶輸入文本時在編輯控件中顯示的口令
SetRect
設置多行編輯控件的帶格式的矩形,並更新該控件
SetRectNP
設置多行編輯控件的帶格式的矩形,而不必重新繪制
SetSel
在編輯控件中選定文本SetTabStops設置多行編輯控件的制表鍵停頓位
SetReadOnly
為編輯控件設置只讀狀態
剪貼板操作
Undo
撤銷上一次的編輯控件操作
Clear
刪除(清除)編輯控件中當前選中的文本
Copy
將編輯控件中的當前選中文本以CF_TEXT格式拷貝到剪貼板中
Cut
刪除編輯控件中當前選中的文本,並將刪除的文本以CF_TEXT格式拷貝到剪貼板中
Paste
在當前光標位置插入剪貼板內的文本。只有在剪貼板數據為CF_TEXT格式時才進行插入
CButton
CObject
└CCmdTarget
└CWnd
└CButton
類CButton提供了對Windows按鈕控件的操作。按鈕控件是一個小的矩形子窗口,可以通過單擊選中(按下)或不選中。按鈕可以單獨使用,也可以成組使用,它還可以具有文本標題。在用戶單擊它的時候,按鈕通常要改變顯示外觀。
典型的按鈕控件有:復選框、單選鈕和下壓式按鈕(pushbutton)。一個CButton對象可以是它們中的一種,這由它的按鈕風格和成員函數Create的初始化決定。
此外,類CButtonBitmap是從類CButton繼承而來的,不過它支持按鈕的圖像標簽。一個CButtonBitmap對象可以分別為它的四種狀態(未按下、按下、獲得焦點和禁止存取)設置不同的位圖。
既可以從對話框模板中創建一個按鈕控件,也可以直接在代碼中創建。
無論哪種情況,都要先調用構造函數CButton構造一個CButton對象,然后調用成員函數Create創建Windows按鈕控件並應用到CButton對象上。
在一個從類CButton派生出來的類中,構造可以一步完成。程序員可以為這個派生類編寫一個構造函數,並在其中調用Create函數。
如果想處理Windows的通知消息,如位圖按鈕控件發給它的父對象(通常是從CDialog繼承來的)的消息,就要在父對象中加入消息映射入口以及處理每個消息的成員函數。
每個消息映射入口的格式如下:
ON_Notification(id,memberFxn)
其中id指定了發送通知的控件的子窗口的ID,而memberFxn指定了處理該通知的父對象中的成員函數名。
父對象的函數原型格式如下:
afx_msgvoidmemberFxn();
可能的消息映射入口如下:
映射入口
何時向父對象發送消息
ON_BN_CLICKED
用戶單擊按鈕時
ON_BN_DOUBLECLICKED
用戶雙擊按鈕時
如果在對話框資源中創建了CButton對象,則在用戶關閉該對話框時會自動撤消這個CButton對象。如果在窗口中創建了CButton對象,就可能需要自己撤消它。如果是用new函數在內存的堆中創建該對象的,則在用戶關閉該窗口按鈕控件時,必須用delete函數撤消它。如果在堆棧中創建了該對象,或者它嵌入在父對話框對象中,系統會自動撤消它。
#include<afxwin.h>
請參閱:
CWnd,CComboBox,CEdit,CListBox,CScrollBar,CStatic,CBitmapButton,CDialog
CButton類的成員
構造函數
CButton
構造一個CButton對象
初始化函數
Create
創建Windows按鈕控件並在CButton對象上應用
操作
GetState
檢索按鈕控件的選中狀態、加亮狀態和獲得焦點狀態
SetState
設置按鈕控件的加亮狀態
GetCheck
檢索按鈕控件的選中狀態
SetCheck
設置按鈕控件的選中狀態
GetButtonStyle
檢索按鈕控件的風格
SetButtonStyle
設置按鈕控件的風格
GetIcon
檢索此前調用SetIcon設置的圖標句柄
SetIcon
指定一個在按鈕上顯示的圖標
GetBitmap
檢索此前調用SetBitmap設置的位圖的句柄
SetBitmap
設置在按鈕上顯示的位圖
GetCursor
檢索此前調用SetCursor設置的光標圖像的句柄
SetCursor
設置在按鈕上顯示的光標圖像
可覆蓋的函數
DrawItem
可以覆蓋它來繪制自定義的CButton對象
CFileDialog
CObject
└CCmdTarget
└CWnd
└CDialog
└CCommonDialog
└CFileDialog
CFileDialog類封裝了Windows常用的文件對話框。常用的文件對話框提供了一種簡單的與Windows標准相一致的文件打開和文件存盤對話框功能。
可以用構造函數提供的方式使用CFileDialog,也可以從CFileDialog派生出自己的對話類並編寫一個構造函數來適應你的需要。每種情況下,對話框都與標准MFC對話框一樣工作。因為它們都是CCommonDialog類的派生類。
要使用CFileDialog,先用CFileDialog構造函數構造一個對象,當創建了一個對話框后,可以設置或修改m_ofn結構中的任何值,以初始化對話框控件的值或狀態。m_ofn結構是OPENFILENAME類型的。要了解更多信息,可參閱聯機文檔“Win32SDK”中的OPENFILENAME結構。
初始化對話框控件后,調用DoModal成員函數顯示對話框並使用戶輸入路徑和文件。DoModal返回不論是用戶選擇了OK(IDOK)還是取消(IDCANCEL)按鈕。
當DoModal返回IDOK,可以使用某一個CFileDIalog的公共成員函數獲取用戶輸入的信息。
CFileDIalog包含許多保護成員,使你可以處理常用的共享沖突、文件名合法性檢查、列表框改變通知。這些保護成員對許多應用來說用處不大,因為缺省處理是自動的。對這些函數來說,消息映射入口是不必要的,因為它們是標准虛函數。
可以使用WindowsCommDlgExtendError函數判斷在初始化對話框時是否是發生了錯誤,並獲取關於錯誤的更多信息。
析構一個CFileDialog對象是自動,無須調用CDialog::EndDialog。
要使用戶選用多個文件,可在調用DoModal之前設置OFN_ALLOWMULTISELECT標志。你應提供文件名緩沖區來放置返回的多個文件名的列表,這通過用一個分配了的緩沖區指針替換m_ofn.lpstrFile來實現,要在創建了CFileDialog之后調用DoModal之前進行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區字節數來設置m_ofn.nMaxFile。
CFileDialog依賴於Windows3.1及以后版本中的COMMDLG.DLL。
如果從CFileDialog中派生出一個新類,可用消息映射處理。要擴展消息處理,從CWnd中派生一個類,向新類中加入一個消息映射並為新消息提供成員函數,無須提供一個鈎子函數來定制對話框。
要定制對話框,從CFileDialog中派生一個對象,提供一個定制對話模板,從擴展控件中加入一個消息映射,處理通知消息。任意未處理的消息將傳遞給基類。
無須定制鈎子函數。
要了解有關使用CFileDialog的信息,可參閱聯機文檔“VisualC++程序員指南”中的“常用對話類”。
#include<afxdlgs.h>
CFileDialog類的成員
數據成員
m_ofn
WindowsOPENFILENAME結構,提供對基本文件對話框參數的訪問
構造函數
CFileDialog
構造一個CFileDialog對象操作
DoModal
顯示對話框並使用戶可以進行選擇
GetPathName
返回選定文件的完整路徑
GetFileName
返回選定文件的文件名
GetFileExt
返回選定文件的擴展文件名
GetFileTitle
返回選定文件的標題
GetNextPathName
返回下一個選定文件的完整路徑
GetReadOnlyPref
返回選定文件的只讀狀態
GetStartPosition
返回文件名列表的第一個元素位置
可覆蓋的函數
OnShareViolation
發生共享沖突時調用
OnFileNameOK
確認鍵入對話框中的文件名
OnLBSelChangedNotify
當列表框選擇改變時調用
OnInitDone
處理WM_NOTIFYCDN_INITDONE消息
OnFileNameChange
處理WM_NOTIFYCDN_SELCHANGE消息
OnFolderChange
處理WM_NOTIFYCDN_FOLDERCHANGE消息
OnTypeChange
處理WM_NOTIFYCDN_TYPECHANGE消息
CListBox
CObject
└CCmdTarget
└CWnd
└CListBox
CListBox類提供Windows列表框的功能。列表框顯示項的列表,如用戶可以見到和選擇的文件名稱。
在單選列表框里,用戶只可選擇一個項。在多選列表框里,可選擇許多項。當用戶選擇某項時,其高亮顯示且列表框給父窗口發送一個通知消息。
可從對話模板或直接在你的代碼中創建列表框。直接創建時,構造CListBox對象,再調用Create成員函數創建Windows列表框控件並將其附加給CListBox對象。要在對話模板中使用列表框,可在對話框類中聲明一個CListbox變量,再在對話框類的DoDataExchange中使用DDX_Control連接成員變量到此控件(當向對話框類中添加控件變量時,ClassWizard自動為你實現)。
構造函數可以是從CListBox派生的類的一個單步進程。為派生類寫構造函數並從中調用Create。
如果要處理由列表框發送到其父親(通常為從CDialog派生的類)的Windows通知消息,為每個消息添加消息映射入口和消息處理成員函數到父類。
每個消息映射入口有以下形式:
ON_Notification(id,memberFxn)
id指定發送通知的列表框控件的子窗口,memberFxn是編寫處理通知的父成員函數名的地方。
父函數原型如下:
afx_msgvoidmemberFxn();
下面是可能的消息映射入口列表和描述它們可能被發送到父親的情況:
ON_LBN_DBLCLK
用戶雙擊列表框中的字符串。只有LBS_NOTIFY風格的列表框才會發送此通知消息。
ON_LBN_ERRSPACE
列表框不能重新分配足夠的內存來滿足請求。
ON_LBN_KILLFOCUS
列表框正失去輸入焦點。
ON_LBN_SELCANCEL
當前列表框選擇被取消。此消息只有在列表框是LBS_NOTIFY風格時才發送。
ON_LBN_SELCHANGE
列表框中的選擇可能改變。如果選擇被CListBox::SetCurSel成員函數改變,則通知不發送。此通知只適用於LBS_NOTIFY風格的列表框。無論何時用戶按下箭頭鍵,即使選擇未改變,LBN_SELCHANGE通知消息都被發送給多選列表框。
ON_LBN_SETFOCUS
列表框正在接收輸入焦點。
ON_WM_CHARTOITEM
一個無字符串的自繪制列表接受WM_CHAR消息。
ON_WM_VKEYTOITEM
LBS_WANTKEYBOARDINPUT風格的列表框接受WM_KEYDOWN消息。
如果在對話框中構造一個CListBox對象(通過對話資源),當用戶關閉對話框時,CListBox對象自動毀棄。
如果在窗口中構造一個CListBox對象,可能需要毀棄CListBox對象。如果在棧上創建CListBox對象,它會自動毀棄。如果使用new函數在堆上創建CListBox對象,必須對此對象調用delete來在用戶關閉父窗口時毀棄它。
如果在CListBox對象中分配內存,可覆蓋CListBox析構程序釋放分配的內存。
#include<afxwin.h>
請參閱:CWnd,CButton,CComboBox,CEdit,CScrollBar,CStatic
CListBox類的成員
構造函數
CListBox
構造一個CListBox對象
初始化
Create
創建Windows列表框並附加給CListBox對象
InitStorage
為列表框的項和字符串預分配內存塊
一般操作
GetCount
返回列表框中的字符串數目
GetHorizontalExtent
返回列表框的水平寬度,用像素表示
SetHorizontalExtent
設置列表框的水平寬度,用像素表示
GetTopIndex
返回列表框中第一個可見字符串的索引
SetTopIndex
設置列表框中第一個可見字符串的基於零的索引
GetItemData
返回與列表框有關的32位值
GetItemDataPtr
返回指向列表框的指針
SetItemData
設置列表框有關的32位值
SetItemDataPtr
設置指向列表框的指針
GetItemRect
返回當前顯示的列表框項的相應矩形
ItemFromPoint
返回與某點最近的列表框項的索引
SetItemHeight
設置列表框中項的高度
GetItemHeight
確定列表框中項的高度
GetSel
返回列表框某項的選擇
GetText
拷貝某列表框項到緩沖區
GetTextLen
返回列表框的字節長
SetColumnWidth
設置多列列表框的列寬
SetTabStops
設置列表框制表鍵停止位置
GetLocale
獲取列表框的地點標識符
SetLocale
設置列表框的地點標識符
單選操作
GetCurSel
返回列表框中當前選擇串的基於零的索引
SetCurSel
選擇一個列表框字符串
多選操作
SetSel
在多選列表框中選擇或不選某個列表框項
GetCaretIndex
確定在多選列表框中有焦點矩形的項的索引
SetCaretIndex
設置焦點矩形到多選列表框中的指定的索引項
GetSelCount
返回多選列表框中當前選擇的字符串的數目
GetSelItems
返回列表框中當前選擇的字符串的索引
SelItemRange
選擇/不選多選列表框中的一些字符串
SetAnchorIndex
設置多選列表框的錨點以開始擴展選擇
GetAnchorIndex
獲取列表框當前錨點項的基於零的索引
字符串操作
AddString
添加一個字符串到列表框中
DeleteString
從列表框中刪除一個字符串
InsertString
在列表框中指定位置插入一個字符串
ResetContent
清空列表框所有入口
Dir
從當前目錄添加文件名稱到列表框中
FindString
在列表框中查找一個字符串
FindStringExact
查找與指定的字符串匹配的第一個列表框字符串
SelectString
查找並選擇單選列表框中的一個字符串
可覆蓋的函數
DrawItem
當自繪制列表框的一個可視部分改變時,被框架調用
MeasureItem
當自繪制列表框創建時,被框架調用來確定列表框維數
CompareItem
被框架調用以確定一系列列表框中某新項的位置
DeleteItem
當用戶從自繪制列表框中刪除某項時,被框架調用
VKeyToItem
覆蓋以提供LBS_WANTKEYBOARDINPUT風格列表框的設置所需的定制WM_KEYDOWN
CharToItem
覆蓋以提供不含字符串的自繪制列表框定制WM_CHAR
CCheckListBox
CObject
└CCmdTarget
└CWnd
└CListBox
└CCheckListBox
類CCheckListBox實現了Windows復選列表框。復選列表框顯示項的一個列表,例如文件名列表。列表中的每項都有一個復選框。
CCheckListBox只用於自定義的控件,列表中不僅僅包含字符串文本。
當然簡單的復選列表框可以只有字符串文本和相應的復選框。實際上也可以沒有文本。例如可以是一個位圖以及相應於復選框的列表。
創建自己的復選列表框,要從類CCheckListBox派生一個子類。然后為它寫一個構造函數,並調用成員函數Create。
如果復選列表框是缺省形式的(由左邊帶有固定大小的復選框的字符串組成),就可以用缺省的CCheckListBox::DrawItem函數繪制復選列表框。否則就要覆蓋函數CListBox::CompareItem、CCheckListBox::DrawItem以及CCheckListBox::Meas-ureItem。
可以在對話框模板或程序代碼中直接創建一個復選列表框。
#include<afxwin.h>
請參閱:CListBox
CCheckListBox類的成員
構造函數
CCheckListBox
構造一個CCheckListBox對象
Create
創建Windows復選列表框並應用到CCheckListBox對象上
屬性函數
SetCheckStyle
設置控件的復選框的風格
GetCheckStyle
獲取控件的復選框的風格
SetCheck
設置某個項的復選框的狀態
GetCheck
取得某個項的復選框的狀態
Enable
允許或禁止存取某個項
IsEnabled
檢測某個項是否允許存取
OnGetCheckPosition
由框架調用,取得某個項的復選框的狀態
可覆蓋的函數
DrawItem
當自定義的列表框的某個可視屬性改變時由框架調用
MeasureItem
當自定義的列表框的風格改變時由框架調用