windows控制元件理論學習
mmp快考試了還在浪
一、對話方塊編輯器建立控制元件
1、使用new在堆上建立,系統結束時我們需要使用delete去銷燬控制元件
2、對話方塊編輯器控制元件,程式結束,自動銷燬
二、控制元件類的基類
CWnd類和訊息對映隱藏在Wndproc()函式,含有windows訊息時,會自動到
onmessage函式中,然後通過Onmessage函式的重寫來實現對特殊訊息的處理
使用CWnd類時,可以通過增加成員函式來實現對相關資料的儲存,另外還可以實現啊成員函式和訊息的對映
建立CWnd子控制元件分為兩步:
呼叫建構函式建立CWnd物件
create函式可以用來建立對話方塊,最後附加到CWnd中
三、控制元件的訊息和處理
發生訊息處理事件的同時,父對話方塊會產生相應的改變,因此我們在做相應的新增
相應的訊息的時候,都要對父類對話方塊做相應的處理,通常格式如下:
ON_Notification(id,memberfunction) //訊息對映
按鈕控制元件
按鈕控制元件有兩個狀態:按下和彈起
按鈕控制元件類Cbutton(Cbitmapbutton處理影象按鈕)
按鈕事件的屬性和訊息
ON_BN_CLICKED,ON_BN_DOUBLECLICKED,使用者雙擊按鈕控制元件,傳送給父窗體相應
事件
GetState(),SetState(),GetCheck(),SetCheck(),獲取相應的視窗
四、靜態控制元件和編輯控制元件
1、靜態控制元件類static
通常不接受輸入和輸出,使用SS_NOTIFY除外,顯示滑鼠,字串,點陣圖等
2、Cedit編輯類控制元件
使用GetLine()、SetSel()、GetSel()、ReplaceSel()成員函式來獲取和設定控制元件部分的文字
常用函式
ON_EN_CHANGE、ON_EN_ERRSPACE、ON_EN_HSCROLL、ON_EN_KILLFOCUS、ON_EN_MAXTEXT、ON_EN_SETFOCUS、ON_EN_UPDATE、ON_EN_VSCROLL訊息
單選框和複選框控制元件
3、單選框控制元件
(1)、將各個單選框按鈕的TAB鍵順序按照分組設定,同一組的單選框控制元件的tab鍵組合在一起。
(2)、選擇每個分組的第一個單選按鈕的group屬性和Tab stop以及Auto屬性。
(3)、其餘的單選框選擇Tab stop和Auto屬性即可
4、單選框控制元件的訊息和參考上面控制元件的訊息
複選框控制元件的建立,在建立時和一般相同但是我們需要選擇複選框,事件參考上述按鈕事件的使用
五、列表框控制元件和組合框控制元件
1、列表框顯示資料的列表
CListBox
使用嚮導新增控制元件物件變數後,嚮導會在對話方塊類的DoDataExchange()函式中使用DDX_Control()函式與成員變數連線起來。
2、常用訊息
ON_LBN_DBLCLK、ON_LBN_ERRSPACE、ON_LBN_SELCANCEL、ON_LBN_KILLFOCUS、ON_LBN_CHANGE、ON_LBN_SETFOCUS、ON_LBN_CHARTOITEM、ON_LBN_VKEYTOLIEM訊息
組合控制元件不僅可以處理CWnd的訊息,另外還可以處理這些訊息
ON_CBN_DBLCLK、ON_CBN_CLOSEUP、ON_CBN_DROPDOWN、ON_CBN_KILLFOCUS、ON_CBN_EDITCHANGE、ON_CBN_EDITUPDATE、ON_CBN_SELCHANGE、ON_CBN_SELENDCANCEL、ON_CBN_SELENDOK訊息
六、微調控制元件、滑塊控制元件和進度條控制元件
1、微調控制元件提供箭頭,單擊箭頭可以進行調整,要使得編輯控制元件和微調控制元件一致需要執行下面的操作:
(1)、將編輯控制元件的Tab順序值和微調控制元件的值相鄰,並且編輯框控制元件的Tab鍵順序值大
(2)、取消微調控制元件的Tab屬性
(3)、設定微調控制元件的屬性
2、劃款控制元件位置等於範圍加一,進度條控制元件方法參照其他控制元件,但是選擇是我們需要選擇進度條控制元件;主要方法如下:
SetRange進度條控制元件的範圍值
SetStep進度條控制元件的增量間隔值
SetPos進度條控制元件的當前位置值
SetPos設定當前位置值
GetPos獲取進度條的當前位置值
七、列表檢視控制元件和樹形檢視控制元件
1、列表檢視支援Icon、SmallIcon、List、Report等檢視
列表檢視控制元件類CLsitCtrl
方法:CListCtrl::GetItem方法、CListCtrl::InsertItem方法、CListCtrl::FindItem方法。
列表檢視控制元件的通知訊息
要對項進行此列內容的排序,應該在處理函式中進行處理、在檢視類或對話方塊類處理WM_NOTIFY訊息對應的處理含糊ONChildNotify,加入switch語句來處理不同訊息。
2、樹形檢視控制元件的建立,參考上述控制元件的建立
3、CTreeCtrl類實現樹形檢視控制元件的功能,WM_NOTIFY訊息。
八、ActiveX控制元件,作用提供持久、連線點和主機標準介面的COM元件,可以在控制元件包含器中處理控制元件的協議,交換訊息和處理事件。
使用
在對話方塊資源編輯器,單擊控制元件|屬性選單項
選擇ALL選項卡,或者選擇指定選項卡,在屬性中輸入初始值
屬性,方法,型別庫
包裝類的使用
控制元件包裝在COleDispatchDriver類
使用GetDlgItem函式需要包裝類,返回值必須轉換為控制元件型別。
CDBLIsT* pDBList=0
pDBList=static_cast<CDBList*>(GetDlgItem(IDC_DBLISt));
ActiveX幫助資訊1控制元件本身資訊2OLE/COM幫助資訊
使用:1控制元件和元件庫插入控制元件2 對話方塊編輯框插入控制元件
MFC需要在InitInstance()新增以下程式碼AfxEnableControlContainer()