freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第4章常用控件(已修改)

2024-10-27 13:38 本頁面
 

【正文】 第 4章 常用控件 控件的創(chuàng)建方法 控件名稱 MFC類 功能描述 靜態(tài)控件 CStatic 用來顯示一些幾乎固定不變的文字或圖形 按鈕 CButton 用來產(chǎn)生某些命令或改變某些選項,包括單選按鈕、復(fù)選框和 組框 編輯框 CEdit 用于完成文本和數(shù)字的輸入和編輯 列表框 CListBox 顯示一個列表,讓用戶從中選取一個或多個項 組合框 CComboBox 是一個列表框和編輯框組合的控件 滾動條 CScrollBar 通過滾動塊在滾動條上的移動和滾動按鈕來改變某些量 進展條 CProgressCtrl 用來表示一個操作的進度 滑動條 CSliderCtrl 通過滑動塊的移動來改變某些量,并帶有刻度指示 旋轉(zhuǎn)按鈕控件 CSpinButtonCtrl 帶有一對反向箭頭的按鈕,單擊這對按鈕可增加或減少某個值 日期時間控件 CDateTimeCtrl 用于選擇指定的日期和時間 圖像列表 CImageList 一個具有相同大小的圖標(biāo)或位圖的集合 標(biāo)簽控件 CTabCtrl 類似于一個筆記本的分隔器或一個文件柜上的標(biāo)簽,使用它可 以將一個窗口或?qū)υ捒虻南嗤瑓^(qū)域定義為多個頁面 常用控件類 控件的創(chuàng)建方法 [例 Ex_DlgCtrls] 用控件的編程方式來創(chuàng)建一個按鈕 (1) 選擇“文件” ?“新建”菜單,在彈出的“新建”對話框中單擊“工程”標(biāo)簽,選擇 MFCAppWizard(exe)的項目類型,在工程框中輸入項目名 Ex_DlgCtrls,結(jié)果如圖 控件的創(chuàng)建方法 (2) 單擊 [確定 ]按鈕,在出現(xiàn)的“ Step 1”對話框中選擇“基本對話框 )”應(yīng)用程序類型,單擊 [完成 ]按鈕,創(chuàng)建一個默認(rèn)的基于對話框的應(yīng)用程序項目。 (3) 將項目工作區(qū)切換到 ClassView頁面,展開 CEx_DlgCtrlsDlg類,右擊 CEx_DlgCtrlsDlg類名,彈出如圖所示的快捷菜單。 控件的創(chuàng)建方法 (4) 從快捷菜單中選擇 Add Member Variable,出現(xiàn)如圖所示 的對話框,在 Variable Type(變量類型 )編輯框中輸入 CButto n(MFC按鈕類 ),在 Variable Name(變量名 ) 編輯框中輸入要 定義的 CButton類對象名 m_btnWnd。 (5) 單擊 [OK]按鈕,這樣 Visual C++就會自動在 CEx_DlgCtrlsDlg 類中添加該成員變量。 控件的創(chuàng)建方法 在項目工作區(qū)的 ClassView頁面中,雙擊 OnInitDialog函數(shù)名,在該函數(shù)中添加下列代碼: BOOL CEx_DlgCtrlsDlg::OnInitDialog() { CDialog::OnInitDialog()。 … (你好 , WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20, 20, 120, 60), this, 201)。 // 創(chuàng)建 CFont *font = thisGetFont()。 // 獲取對話框的字體 (font)。 // 設(shè)置控件字體 return TRUE。 // return TRUE unless you set the focus to a control } 控件的創(chuàng)建方法 (7) 編譯并運行,結(jié)果如圖所示。 控件編程創(chuàng)建方法涉及到的編程內(nèi)容比較復(fù)雜,且不能發(fā)揮對話框編輯器可視化的優(yōu)點,故本書采用前一種方法,即在對話框模板中用編輯器指定控件。 控件的消息及消息映射 應(yīng)用程序創(chuàng)建一般控件或公共控件之后,當(dāng)控件的狀態(tài)發(fā)生改變時,控件就會向其父窗口發(fā)送消息,這個消息稱為“通知消息”。 系統(tǒng)都會用一個 MSG結(jié)構(gòu)來記錄 ,MSG具有下列結(jié)構(gòu): typedef struct tagMSG { // msg HWND hwnd。 // 接收到消息的窗口句柄 UINT message。 // 消息 WPARAM wParam。 // 消息的附加信息,它的含義取決 于 message LPARAM lParam。 // 消息的附加信息,它的含義取決 于 message DWORD time。 // 消息傳送時的時間 POINT pt。 // 消息傳送時,光標(biāo)所在的屏幕坐標(biāo) } MSG。 控件的消息及消息映射 在 MFC中,映射一個控件消息是非常簡便的,如下面的過 程是對新添加的按鈕控件映射 BN_CLICKED(單擊 )消息。 將項目工作區(qū)窗口切換到 ResourseView頁面,雙擊 Dialog 資源下的標(biāo)識 IDD_EX_DLGCTRLS_DIALOG,打開該對 話框資源模板。刪除“ TODO: 在這里設(shè)置對話控制?!笨丶?, 添加一個按鈕控件,保留其默認(rèn)屬性。如圖所示。 控件的消息及消息映射 (3) 按快捷鍵 Ctrl+W,打開 MFC ClassWizard對話框,查看“ Class name”列表中是否選擇了 CEx_DlgCtrlsDlg,在 IDs列表中選擇 IDC_BUTTON1,這是添加按鈕后,系統(tǒng)自動為此按鈕設(shè)置的默認(rèn)標(biāo)識符,然后在 Messages框中選擇BN_CLICKED消息。 (4) 單擊 [Add Function]按鈕或雙擊 BN_CLICKED消息,出現(xiàn)“ Add Member Function”對話框,在這里可以輸入成員函數(shù)的名稱,系統(tǒng)默認(rèn)的函數(shù)名為 OnButton1。 控件的消息及消息映射 (5)單擊 [OK]按鈕,在 MFC ClassWizard的“ Member functions”列表中將列出新增加的成員函數(shù)。 在此成員函數(shù)中添加下列代碼: void CEx_DlgCtrlsDlg::OnButton1() { MessageBox(你按下了 \Button1\按鈕! )。 } (6) 編譯并運行,當(dāng)單擊 [Button1]按鈕時,就會執(zhí)行OnButton1函數(shù),彈出一個消息對話框。這就是按鈕BN_CLICKED消息的映射過程,其他控件的消息也可以類似操作。 控件的消息及消息映射 2. 控件消息映射機制 (1) 將項目工作區(qū)切換到 FileView(文件視圖 )頁面,展開 Head Files(頭文件 )所有項,雙擊 CEx_DlgCtrlsDlg 類的 頭文件 ,在 可以找到這樣的代碼 (加粗的代碼,以下同 ): protected: … // Generated message map functions //{{AFX_MSG(CEx_DlgCtrlsDlg) … afx_msg void OnButton1()。 //}}AFX_MSG DECLARE_MESSAGE_MAP() }。 控件的消息及消息映射 (2) 在項目工作區(qū) FileView頁面中,展開 Source Files(源文件 )所有項,雙擊 CEx_DlgCtrlsDlg 類的源文件 ,在 到這樣的代碼: BEGIN_MESSAGE_MAP(CEx_DlgCtrlsDlg, CDialog) //{{AFX_MSG_MAP(CEx_DlgCtrlsDlg) … ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() (3)在 代碼,它與一般函數(shù)實現(xiàn)相同。 控件的消息及消息映射 4. 映射控件通用消息 通過 WM_COMMAND消息的映射來處理一個或多個控件 通用消息,如下面的過程。 (1)按快捷鍵 Ctrl+W,打開 MFC ClassWizard對話框, “ Class name”列表中是否選擇了 CEx_DlgCtrlsDlg,在IDs 表中選擇 CEx_DlgCtrlsDlg,在 Messages框中找到并雙擊OnCommand,這樣 OnCommand消息函數(shù)就添加好了,由于 OnCommand函數(shù)是一個用來處理 WM_COMMAND 消息的虛函數(shù),因此這里添加的 OnCommand函數(shù)事實上是一個在類中實際調(diào)用的函數(shù),可稱為“實例函數(shù)”。這樣的映射操作,可以稱之為“對虛函數(shù) OnCommand的重載”。 控件的消息及消息映射 (2) 在 OnCommand函數(shù)中添加下列代碼: BOOL CEx_DlgCtrlsDlg::OnCommand(WPARAM wParam, LPARAM lParam) { WORD nCode = HIWORD(wParam)。 // 控件的通知消息 WORD nID = LOWORD(wParam)。 // 控件的 ID號 if ((nID == 201)amp。amp。(nCode == BN_CLICKED)) MessageBox(你按下了 \你好 \按鈕! )。 if ((nID == IDC_BUTTON1)amp。amp。(nCode == BN_CLICKED)) MessageBox(這是在 OnCommand處理的結(jié)果! )。 return CDialog::OnCommand(wParam, lParam)。 } (3) 編譯并運行。 控件的數(shù)據(jù)交換 (DDX)和數(shù)據(jù)校驗 (DDV) MFC采用了獨特的 DDX和 DDV技術(shù)。 使用 MFC ClassWizard可以很容易地為一個控件定義關(guān)聯(lián)變量并可設(shè)置其數(shù)據(jù)范圍。 為 CEx_DlgCtrlsDlg類的按鈕控件 IDC_BUTTON1添加并使用其關(guān)聯(lián)變量 m_RelBtn。 ( 1) 按快捷鍵 Ctrl+W,打開 MFC ClassWizard,并切換到 Member Variables頁面。 ( 2) 選定 Class name為 CEx_DlgCtrlsDlg,然后在Control IDs列表中,選定所要關(guān)聯(lián)的控件 ID號IDC_BUTTON1,雙擊鼠標(biāo)右鍵或 單擊 [Add Variable]按鈕,彈出 Add Member Variable對話框,對話框設(shè)置變量的名稱、類別和數(shù)據(jù)類型。 控件的數(shù)據(jù)交換 (DDX)和數(shù)據(jù)校驗 (DDV) 對于編輯框來說, Variables type中的數(shù)值類型可以有CStringint、 UINT、 long、 DWORD、 float、 double、 BYTE、 short、BOOL等。 MFC ClassWizard的“ Membe Variables”頁面 “Add Member Variable” 對話框 控件的數(shù)據(jù)交換 (DDX)和數(shù)據(jù)校驗 (DDV) (3) 在 Member variable name框中填好與控件相關(guān)聯(lián)的成員變量m_RelBtn,單擊 [OK]按鈕,又回到 MFC ClassWizard對話框的Member Variables頁面中,在 Control IDs列表中出現(xiàn)剛才添加的控件關(guān)聯(lián)變量 (或直接稱之為“控件變量” )。 控件的數(shù)據(jù)交換 (DDX)和數(shù)據(jù)校驗 (DDV) 在 ,添加控件關(guān)聯(lián)變量聲明,代碼如下面加粗部分: // Dialog Data FX_DATA(CEx_DlgCtrlsDlg) enum{ IDD=IDD_EX_DLGC TRLS_DIALOG }。 // 枚舉類型 CButton m_RelBtn。 CString m_strEdit。 //}}AFX_DATA 在 CEx_DlgCtrlsDlg構(gòu)造函數(shù)實現(xiàn)代碼處,添加控件變量的一 些初始代碼: CEx_DlgCtrlsDlg::CEx_DlgCtrlsDlg(CWnd* pParent /*=NULL*/) : CDialog(CEx_DlgCtrlsDlg::IDD, pParent) { //{{AFX_DATA_INIT(CEx_DlgCtrlsDlg) m_strEdit = _T()。 //}}AFX_DATA_INIT … } (4) 單擊 [確定 ]按鈕后,打開 CEx_DlgCtrlsDlg類源
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1