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

正文內(nèi)容

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

2024-10-27 13:38 本頁(yè)面
 

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