Windows編程實驗五_第1頁
Windows編程實驗五_第2頁
Windows編程實驗五_第3頁
Windows編程實驗五_第4頁
Windows編程實驗五_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、武漢輕工大學(xué)Windows編程實驗報告(實驗五)姓名: 劉 文 斌 院系:數(shù)學(xué)與計算機 學(xué)院班級:軟件工程13 03班 學(xué)號: 13051100 50 老師: 劉 文 濤 2015.12.16實驗五 常用控件程序1:Ex_DlgCtrls 用控件的編程方式來創(chuàng)建一個按鈕(1) 選擇“文件”à“新建”菜單,在彈出的“新建”對話框中單擊“工程”標(biāo)簽,選擇MFCAppWizard(exe)的項目類型,在工程框中輸入項目名Ex_DlgCtrls(2) 單擊確定按鈕,在出現(xiàn)的“Step 1”對話框中選擇“基本對話框)”應(yīng)用程序類型,單擊完成按鈕,創(chuàng)建一個默認(rèn)的基于對話框的應(yīng)用程序項目。(3)

2、將項目工作區(qū)切換到ClassView頁面,展開CEx_DlgCtrlsDlg類,右擊CEx_DlgCtrlsDlg類名,彈出如圖所示的快捷菜單。 (4) 從快捷菜單中選擇Add Member Variable,出現(xiàn)如圖所示的對話框,在Variable Type(變量類型)編輯框中輸入CButto n(MFC按鈕類),在Variable Name(變量名) 編輯框中輸入要定義的CButton類對象名m_btnWnd。(5) 單擊OK按鈕,這樣Visual C+就會自動在CEx_DlgCtrlsDlg 類中添加該成員變量。 在項目工作區(qū)的ClassView頁面中,雙擊OnInitDialog函數(shù)名

3、,在該函數(shù)中添加下列代碼:BOOL CEx_DlgCtrlsDlg:OnInitDialog()CDialog:OnInitDialog();m_btnWnd.Create("你好", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20, 20, 120, 60), this, 201); / 創(chuàng)建CFont *font = this->GetFont(); / 獲取對話框的字體m_btnWnd.SetFont(font); / 設(shè)置控件字體return TRUE; / return TRUE unless you set

4、the focus to a control (6) 編譯并運行,結(jié)果如圖所示程序2:映射控件消息1. 在MFC中,映射一個控件消息是非常簡便的,如下面的過程是對新添加的按鈕控件映射BN_CLICKED(單擊)消息。將項目工作區(qū)窗口切換到ResourseView頁面,雙擊Dialog資源下的標(biāo)識IDD_EX_DLGCTRLS_DIALOG,打開該對話框資源模板。刪除“TODO: 在這里設(shè)置對話控制。”控件,添加一個按鈕控件,保留其默認(rèn)屬性。如圖所示。 2 按快捷鍵Ctrl+W,打開MFC ClassWizard對話框,查看“Class name”列表中是否選擇了CEx_DlgCtrlsDlg,

5、在IDs列表中選擇IDC_BUTTON1,這是添加按鈕后,系統(tǒng)自動為此按鈕設(shè)置的默認(rèn)標(biāo)識符,然后在Messages框中選擇BN_CLICKED消息。3 單擊Add Function按鈕或雙擊BN_CLICKED消息,出現(xiàn)“Add Member Function”對話框,在這里可以輸入成員函數(shù)的名稱,系統(tǒng)默認(rèn)的函數(shù)名為OnButton1。4 單擊OK按鈕,在MFC ClassWizard的“Member functions”列表中將列出新增加的成員數(shù)。在此成員函數(shù)中添加下列代碼:void CEx_DlgCtrlsDlg:OnButton1() MessageBox("你按下了"

6、;Button1"按鈕!");5.編譯并運行,當(dāng)單擊Button1按鈕時,就會執(zhí)行OnButton1函數(shù),彈出一個消息對話框。這就是按鈕BN_CLICKED消息的映射過程,其他控件的消息也可以類似操作。運行結(jié)果:程序3:寫一個單文檔程序,用菜單命令打開一個對話框,通過該對話框中的紅色,綠色,藍(lán)色單選按鈕選擇顏色,在視圖中繪制不同顏色的矩形。步驟:1、新建一個單文檔,并在菜單欄里新建一個菜單,如圖:2,新建一個對話框類,在其中添加控件,如圖:3、創(chuàng)建一個對話框類CFuxuanDlg 。給類添加成員變量,如圖:4,進(jìn)入Class Wizard 。選擇對話框類CFuxuanDlg

7、。分別選擇ID 為IDC_BLUE、IDC_GREEN、IDC_RED,添加函數(shù)如下:void CFuxuanDlg:OnRed() m_red = IsDlgButtonChecked(IDC_RED);UpdateWindow();void CFuxuanDlg:OnGreen() m_green = IsDlgButtonChecked(IDC_GREEN);UpdateWindow();void CFuxuanDlg:OnBlue() m_blue = IsDlgButtonChecked(IDC_BLUE);UpdateWindow();5,進(jìn)入Class Wizard 。選擇對話框

8、類E3View。分別選擇ID 為ID_OPENDLG。添加函數(shù)如下:void CE3View:OnOpendlg() CFuxuanDlg f;f.DoModal();COLORREF color = RGB(f.m_red? 255 : 0 , f.m_green? 255 : 0 , f.m_blue? 255 : 0 );CPen newpen, *oldpen;CClientDC dc(this); newpen.CreatePen(PS_SOLID,2,color);oldpen = dc.SelectObject(&newpen); dc.Rectangle(200,200

9、,300,300);dc.SelectObject(oldpen);6、在E3View.cpp類的頭文件后面加入:#include "FuxuanDlg.h"運行結(jié)果: 程序4:寫一個單文檔程序,添加一個工具欄按鈕。單擊該按鈕彈出一個對話框,通過該對話框中的紅色,綠色,藍(lán)色復(fù)選框選額顏色,在視圖中輸出一行文本。步驟:1, 在程序3 的基礎(chǔ)上,添加一個工具欄按鈕,如圖:2、進(jìn)入Class Wizard 。選擇對視圖類E3View。選擇ID 為ID_FILENEW。添加函數(shù)如下void CE3View:OnFileNew() CFuxuanDlg f;f.DoModal();C

10、OLORREF color = RGB(f.m_red? 255 : 0 , f.m_green? 255 : 0 , f.m_blue? 255 : 0 );CDC* pDC = GetDC();pDC->SetTextColor(color);pDC->TextOut(50,50,"這是程序四的一行文本!");運行結(jié)果: 程序5:寫一個對話框程序,根據(jù)用戶從列表框中選擇的線條樣式,在對話框中繪制一個矩形。線條樣式有水平線,垂直線,向下斜線,十字線等四種畫刷。步驟:1,新建一個對話框程序,并添加控件,如圖:2、在對話框類中添加成員變量,如圖:3,在E6Dlg.

11、h中添加 public:CRect m_sample;4、進(jìn)入Class Wizard。選擇對話框類CE51Dlg.cpp。分別選擇選擇WM_INITDIALOG、WM_DESTROY、LBN_SELCHANGE。添加函數(shù)如下:BOOL CE51Dlg:OnInitDialog() m_list.AddString("水平線");m_list.AddString("垂直線");m_list.AddString("向下斜線");m_list.AddString("十字線");GetDlgItem(IDC_SAMPLE

12、) -> GetWindowRect(&m_sample);ScreenToClient(&m_sample);int Border = (m_sample.right - m_sample.left)/6;m_sample.InflateRect(-Border,-Border);return TRUE; / return TRUE unless you set the focus to a controlvoid CE51Dlg:OnSelchangeList1() int index = m_list.GetCurSel(); int HatchStyle = HS

13、_VERTICAL , HS_DIAGCROSS , HS_HORIZONTAL , HS_FDIAGONAL ; CDC* p = GetDC(); CBrush* bold,bnew; bnew.CreateHatchBrush(HatchStyleindex,RGB(0,0,0); bold = p->SelectObject(&bnew); p->Rectangle(&m_sample); p->SelectObject(bold); bnew.DeleteObject();void CE51Dlg:OnDestroy() CDialog:OnDest

14、roy();for(int index = m_list.GetCount()-1 ; index >= 0 ; index-)delete m_list.GetItemDataPtr(index);運行結(jié)果:程序6:用組合框取代列表框,實現(xiàn)程序5一樣的功能。步驟:1,新建一個對話框程序,并添加控件,如圖:2、 在對話框類中添加成員變量,如圖:3,在E6Dlg.h中添加 public:CRect m_sample;4、進(jìn)入Class Wizard。選擇對話框類CE6Dlg.cpp。分別選擇選擇WM_INITDIALOG、WM_DESTROY、CBN_SELCHANGE。添加函數(shù)如下BOO

15、L CE6Dlg:OnInitDialog()./ TODO: Add extra initialization herem_combo.AddString("水平線");m_combo.AddString("垂直線");m_combo.AddString("向下斜線");m_combo.AddString("十字線");GetDlgItem(IDC_SAMPLE) -> GetWindowRect(&m_sample);ScreenToClient(&m_sample);int Border

16、 = (m_sample.right - m_sample.left)/6;m_sample.InflateRect(-Border,-Border);return TRUE; / return TRUE unless you set the focus to a controlvoid CE6Dlg:OnDestroy() CDialog:OnDestroy(); for(int index = m_combo.GetCount()-1 ; index >= 0 ; index-)delete m_combo.GetItemDataPtr(index);void CE6Dlg:OnSelchangeCombo1() int HatchStyle = HS_VERTICAL , HS_DIAGCROSS , HS_HORIZONTAL , HS_FDIAGONAL ;int index = m_combo.GetCurSel();CDC* p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論