1. 程式人生 > >windows控制元件理論學習

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()