




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Lab. of Marine Dynamic Simulation & ControlMFC Programming1MFC對話框與組件對話框與組件控件編程控件編程Lab. of Marine Dynamic Simulation & ControlMFC Programming2 1、對話框編程、對話框編程 2、組件和組件和ActiveX控件的使用控件的使用Lab. of Marine Dynamic Simulation & ControlMFC Programming31、對話框編程、對話框編程 工程中加入有模式對話框工程中加入有模式對話框 標準控件常用控件標準控
2、件常用控件 工程中加入無模式對話框工程中加入無模式對話框 對話框中的數據交換對話框中的數據交換 使用標準對話框使用標準對話框Lab. of Marine Dynamic Simulation & ControlMFC Programming4工程中加入有模式對話框工程中加入有模式對話框 對話框是基于資源的,資源指定其包含的元素和布局。對話框是基于資源的,資源指定其包含的元素和布局。 對話框包含最基本的窗口元素:控件對話框包含最基本的窗口元素:控件 一個從一個從CDialog類派生的類派生的MFC類完成和對話框界面的類完成和對話框界面的聯系聯系Lab. of Marine Dynamic
3、 Simulation & ControlMFC Programming5 有模式對話框:對話框關閉之前,用戶有模式對話框:對話框關閉之前,用戶無法在該程序的其它窗口中工作,如記無法在該程序的其它窗口中工作,如記事本中的字體對話框。事本中的字體對話框。 無模式對話框:對話框關閉前,用戶可無模式對話框:對話框關閉前,用戶可在其它窗口工作在其它窗口工作(但對話框在最頂端但對話框在最頂端),如,如記事本中的替換對話框。記事本中的替換對話框。Lab. of Marine Dynamic Simulation & ControlMFC Programming6 設計對話框模板設計對話框模
4、板 在資源編輯器中插入對話框模板在資源編輯器中插入對話框模板 在模板中添加所需控件在模板中添加所需控件 設置控件的各種屬性設置控件的各種屬性 設計對話框模板時經常使用的工具(如圖釘設計對話框模板時經常使用的工具(如圖釘按鈕,對齊,統一大小),規劃對話框中的按鈕,對齊,統一大小),規劃對話框中的各種元素,使之美觀大方,使用方便各種元素,使之美觀大方,使用方便Lab. of Marine Dynamic Simulation & ControlMFC Programming7 生成對話框類生成對話框類: ClassWizard生成對話框類派生類生成對話框類派生類 添加數據成員,與控件進行交
5、互操作:添加數據成員,與控件進行交互操作: 用用ClassWizard定義一個與控件相關聯的成員變定義一個與控件相關聯的成員變量量(可為一控件對象,也可為一數據量可為一控件對象,也可為一數據量),可在構可在構造函數中或造函數中或OnInnitDialog函數中進行初始化函數中進行初始化 在程序運行中創建一個在程序運行中創建一個MFC控件的窗口對象,使控件的窗口對象,使用用GetDlgItem方法為對話框的控件獲取一個指向方法為對話框的控件獲取一個指向CWnd對象的指針對象的指針 接收來自控件的接收來自控件的BN_CLICKED等各種消息:等各種消息:用用ClassWizard添加消息映射添加消
6、息映射Lab. of Marine Dynamic Simulation & ControlMFC Programming8 工程中加入有模式對話框步驟:工程中加入有模式對話框步驟: 使用對話框編輯器創建對話框資源,并用使用對話框編輯器創建對話框資源,并用ClassWizard生成派生對話框類,添加數據生成派生對話框類,添加數據成員和消息映射成員和消息映射 特殊控件初始化:程序控制特殊控件初始化:程序控制 在視圖中編寫代碼,激活對話框對象在視圖中編寫代碼,激活對話框對象 CTestDialog dlg; if(dlg.DoModal( )IDOK) (注:在文件頭加上對話框的頭文件注:
7、在文件頭加上對話框的頭文件)Lab. of Marine Dynamic Simulation & ControlMFC Programming9 有模式對話框的運行過程:有模式對話框的運行過程: 先創建對話框類實例:僅僅是一個類對象先創建對話框類實例:僅僅是一個類對象 調用調用DoModal函數函數 disable原窗口原窗口,使原窗口無法接收用戶輸入使原窗口無法接收用戶輸入 創建基于對話框模板的窗口創建基于對話框模板的窗口 建立自己的窗口過程:可進行消息處理建立自己的窗口過程:可進行消息處理 WM_INITDIALOG消息觸發調用消息觸發調用OnInitDialog,進行一些對話框
8、初始化工作進行一些對話框初始化工作 CWnd:UpdateData(FALSE) DoDataExchageLab. of Marine Dynamic Simulation & ControlMFC Programming10 有模式對話框的運行過程:有模式對話框的運行過程: 用戶輸入數據或進行其他消息處理操作用戶輸入數據或進行其他消息處理操作 用戶單擊用戶單擊OK按鈕按鈕 OnOK UpdateData(TRUE)從控件傳到數據成員從控件傳到數據成員 DoDataExchage Cdialog:EndDialog(IDOK)Lab. of Marine Dynamic Simula
9、tion & ControlMFC Programming11 處理關于在使用對話框時處理關于在使用對話框時Enter鍵和鍵和Escape鍵的處理:鍵的處理: 在使用對話框是你會發現當你按下在使用對話框是你會發現當你按下Enter鍵鍵或或Escape鍵都會退出對話框,這是因為鍵都會退出對話框,這是因為Enter鍵會引起鍵會引起CDialog:OnOK()的調用,而的調用,而Escape鍵會引起鍵會引起CDialog:OnCancel()的調用。的調用。而這兩個調用都會引起對話框的退出。而這兩個調用都會引起對話框的退出。 在在MFC中這兩個成員函數都是虛擬函數,所中這兩個成員函數都是虛擬
10、函數,所以我們需要進行重載,如果我們不希望退出以我們需要進行重載,如果我們不希望退出對話框那么我們可以在函數中什么都不做。對話框那么我們可以在函數中什么都不做。如果需要進行檢查則可以添加檢查代碼,然如果需要進行檢查則可以添加檢查代碼,然后調用父類的后調用父類的OnOK()或或OnCancel()。Lab. of Marine Dynamic Simulation & ControlMFC Programming12 在對話框中繪圖:重載在對話框中繪圖:重載OnPaint函數函數 void CTestDialog:OnPaint() CPaintDC dc(this); COLORREF
11、 color=RGB(255,0,0); CPen pen(PS_SOLID,10, color); CPen* pOldPen=dc.SelectObject(&pen); dc.Rectangle(150,150,200,200); dc.SelectObject(pOldPen); Lab. of Marine Dynamic Simulation & ControlMFC Programming13標準控件常用控件標準控件常用控件 信息顯示控件:如靜態文本、圖形、樹狀、信息顯示控件:如靜態文本、圖形、樹狀、列表框等,用于向用戶顯示數據列表框等,用于向用戶顯示數據 信息請
12、求控件:按鈕、樹狀、列表框等,使信息請求控件:按鈕、樹狀、列表框等,使用戶能從應用程序中獲取信息用戶能從應用程序中獲取信息 信息修改控件:編輯框、單選按鈕、復選框信息修改控件:編輯框、單選按鈕、復選框等,使用戶能夠修改應用程序的數據等,使用戶能夠修改應用程序的數據Lab. of Marine Dynamic Simulation & ControlMFC Programming14 標準控件標準控件(基本控件基本控件): 圖形控件圖形控件 靜態文本靜態文本編輯框編輯框 分組框分組框 按鈕按鈕復選框復選框 單選按鈕單選按鈕 組合框組合框列表框列表框 橫向滾動條橫向滾動條 縱向滾動條縱向滾
13、動條Lab. of Marine Dynamic Simulation & ControlMFC Programming15 常用控件常用控件: 微調控件微調控件進程指示器進程指示器滑塊滑塊 熱鍵熱鍵 列表控件列表控件 樹狀控件樹狀控件 選項卡控件選項卡控件 動畫控件動畫控件 月歷月歷 多信息文本編輯控件多信息文本編輯控件IP地址控件地址控件 日期日期/時間調節器時間調節器擴展組合框擴展組合框Lab. of Marine Dynamic Simulation & ControlMFC Programming16 標準控件和常用控件在標準控件和常用控件在MFC中都有對應中都有對應
14、的類,從的類,從CWnd類派生出來的,都具有窗類派生出來的,都具有窗口的屬性口的屬性Lab. of Marine Dynamic Simulation & ControlMFC Programming17 控件不但可以在對話框模板中設計并顯控件不但可以在對話框模板中設計并顯示,也可以脫離對話框存在示,也可以脫離對話框存在 簡單的控件直接在對話框中設計并簡單簡單的控件直接在對話框中設計并簡單映射成員變量和消息即可很好的使用映射成員變量和消息即可很好的使用 復雜的控件可以由復雜的控件可以由GetDlgItem返回指向返回指向控件的類指針,通過該指針可以對該控控件的類指針,通過該指針可以對該
15、控件進行程序運行時操作件進行程序運行時操作 也可以通過這種方法運行時增加控件也可以通過這種方法運行時增加控件Lab. of Marine Dynamic Simulation & ControlMFC Programming18 通用窗口通用窗口(CWnd)的一些用法的一些用法 改變窗口狀態:改變窗口狀態: EnableWindowIsWindowEnabled設置查詢窗口設置查詢窗口的禁止的禁止/允許狀態允許狀態 ModifyStyleModifyStyleEx 修改窗口風格修改窗口風格 IsWindowVisible 可以檢查窗口是否被顯示可以檢查窗口是否被顯示 ShowWindo
16、w; (SW_HIDE,SW_SHOW等)等) 改變窗口位置改變窗口位置 MoveWindow/GetWindowRect/IsIconic/SetWindowPos 使窗口失效,印發重繪使窗口失效,印發重繪 Invalidate/InvalidateRectLab. of Marine Dynamic Simulation & ControlMFC Programming19 通用窗口的一些用法通用窗口的一些用法 窗口查找:窗口查找: FindWindow/IsChild/GetParent/GetDlgItem/ GetDlgCtrlID/WindowFromPoint 可以利用重
17、載來添加消息處理的虛函數可以利用重載來添加消息處理的虛函數 OnCreate/OnDestroy;窗口被創建窗口被創建/銷毀時被調用銷毀時被調用 OnGetMinMaxInfo需要得到窗口尺寸時被調用需要得到窗口尺寸時被調用 OnSize窗口改變大小后被調用窗口改變大小后被調用 OnMove窗口被移動后時被調用窗口被移動后時被調用 OnPaint( ); OnChar/OnKeyDown/OnKeyUp鍵盤字符消息鍵盤字符消息 OnLButtonDown/OnRButtonDown/OnLButtonUp/OnRButtonUp/OnLButtonDblClk/OnRButtonDblClk/
18、OnMouseMove鼠標消息鼠標消息Lab. of Marine Dynamic Simulation & ControlMFC Programming20工程中加入無模式對話框工程中加入無模式對話框 工程中加入無模式對話框步驟:工程中加入無模式對話框步驟: 1)利用資源編輯器和利用資源編輯器和ClassWizard創建對話框模板創建對話框模板和對話框類和對話框類 2)調用調用CDialog的缺省構造函數構造對象,可以將的缺省構造函數構造對象,可以將父窗口指針保存,用于發送消息父窗口指針保存,用于發送消息 3)調用調用CDialog:Create(IDD)創建對話框窗口創建對話框窗口
19、 if(pDlg-m_hWnd=NULL) pDlg-Create(IDD_TESTDIALOG); pDlg-ShowWindow(SW_SHOW);Lab. of Marine Dynamic Simulation & ControlMFC Programming21 無模式對話框也可由函數無模式對話框也可由函數ShowWindow 顯示和隱藏,而不直接銷毀窗口顯示和隱藏,而不直接銷毀窗口: pDlg-ShowWindow(SW_SHOW); pDlg-ShowWindow(SW_HIDE);Lab. of Marine Dynamic Simulation & Contr
20、olMFC Programming22 自定義消息自定義消息: #define WM_GOODBYE WM_USER+5 手工加入消息映射手工加入消息映射 可以通過向視圖發送用戶定義的消息處處可以通過向視圖發送用戶定義的消息處處理按鈕消息。理按鈕消息。 SendMessage(WM_GOODBYE) PostMessage(WM_GOODBYE) 觸發由消息映射定義的消息處理函數。觸發由消息映射定義的消息處理函數。 消息是誰發送誰接收。消息是誰發送誰接收。Lab. of Marine Dynamic Simulation & ControlMFC Programming23對話框中的數
21、據交換對話框中的數據交換 標準標準DDX (動態數據交換動態數據交換) DDX_Text(pDX,IDC_EDIT1,m_number); UpdateData用于保持所有用于保持所有DDX關聯的同步關聯的同步 UpdateData(TRUE):數據從控件傳遞給相關聯數據從控件傳遞給相關聯的成員變量的成員變量 UpdateData(FALSE):數據從成員變量傳遞給相數據從成員變量傳遞給相關聯的控件關聯的控件Lab. of Marine Dynamic Simulation & ControlMFC Programming24 標準標準DDV (動態數據驗證動態數據驗證) DDV_Mi
22、nMaxInt(pDX,m_number,1,200); 在給控件添加成員變量時可設置改變量的大小范圍在給控件添加成員變量時可設置改變量的大小范圍 也可在也可在DoDataExchange中修改范圍中修改范圍 它只能簡單的設置,復雜的數據有效判斷需編程實它只能簡單的設置,復雜的數據有效判斷需編程實現現Lab. of Marine Dynamic Simulation & ControlMFC Programming25使用標準對話框使用標準對話框 常用標準對話框常用標準對話框 CColorDialog CFileDialog CFindReplaceDialog CPageSetupD
23、ialog CFontDialog CPrintDialog 等等等等Lab. of Marine Dynamic Simulation & ControlMFC Programming26 直接使用標準對話框類,如直接使用標準對話框類,如CFontDialog CFontDialog dlg; if(dlg.DoModal()=IDOK) LOGFONT lplf; dlg.GetCurrentFont(&lplf); CFont font1; font1.CreatePointFontIndirect(&lplf); CDC* pDC=GetDC(); CFont*
24、 pOldFont=pDC-SelectObject(&font1); pDC-SetTextColor(dlg.GetColor(); pDC-TextOut(100,100,“大連海事大學大連海事大學”); pDC-SelectObject(pOldFont); ReleaseDC(pDC); Lab. of Marine Dynamic Simulation & ControlMFC Programming27 從標準對話框類中派生出新類從標準對話框類中派生出新類 先從先從CDialog類派生出基于模板的對話框類,手類派生出基于模板的對話框類,手工修改將基類變為工修改將基
25、類變為CFileDialog,并修改構造函數:并修改構造函數: m_ofn.Flags |= OFN_ENABLETEMPLATE; m_ofn.lpTemplateName=MAKEINTRESOURCE (IDD_SPECIALFILEDIALOG); 該類有該類有CFileDialog的功能,也可加入自己定義的的功能,也可加入自己定義的功能功能 控件由特殊的資源控件由特殊的資源ID號得到號得到Lab. of Marine Dynamic Simulation & ControlMFC Programming28小結小結 常用控件有那些?對應常用控件有那些?對應MFC的哪一些類?的
26、哪一些類? 有模式對話框的創建使用?有模式對話框的創建使用? 無模式對話框的創建使用?無模式對話框的創建使用? 常用對話框有那些?常用對話框有那些?Lab. of Marine Dynamic Simulation & ControlMFC Programming292、組件和組件和ActiveX控件使用控件使用 組件和控件組件和控件 組件使用組件使用 ActiveX控件使用控件使用Lab. of Marine Dynamic Simulation & ControlMFC Programming30組件和控件組件和控件 可重復使用的可重復使用的C+類:類: 代碼準確,效率高代
27、碼準確,效率高 完整完整 封裝性好封裝性好 使用方便使用方便 Component Gallery就是一些微軟所提供就是一些微軟所提供的可重復使用的的可重復使用的C+類集,不一定是窗口類集,不一定是窗口Lab. of Marine Dynamic Simulation & ControlMFC Programming31組件和控件組件和控件 普通控件普通控件(標準控件和常用控件標準控件和常用控件) 都是子窗口(經常在對話框中使用)都是子窗口(經常在對話框中使用) 通過通過MFC類對象操控類對象操控 客戶程序負責創建控件的子窗口客戶程序負責創建控件的子窗口 控件向父窗口發送標準窗口消息控件
28、向父窗口發送標準窗口消息(BN_CLICKED) 父窗口通過調用對應控件的父窗口通過調用對應控件的C+類的成員函類的成員函數操作控件數操作控件Lab. of Marine Dynamic Simulation & ControlMFC Programming32 ActiveX控件控件 屬性和方法屬性和方法 屬性具有符號名字(可以匹配到整型索引)和類型屬性具有符號名字(可以匹配到整型索引)和類型 方法與函數非常相似方法與函數非常相似 不是向控件容器發送不是向控件容器發送WM_通知消息,而是通知消息,而是“觸發觸發”事件入單擊事件事件入單擊事件 常用動態連接庫存放,但其擴展名是常用動態連
29、接庫存放,但其擴展名是OCX ActiveX 控件實質上也是一個控件實質上也是一個DLL,只不過它需要滿只不過它需要滿足足COM規范,并需要提供一些規范,并需要提供一些ActiveX控件所需要控件所需要的接口的接口 Lab. of Marine Dynamic Simulation & ControlMFC Programming33組件使用組件使用 加入組件:加入組件: Project-AddtoProject-Components and Controls-Visual C+ Components-Splash screen VC+ IDE將自動加入一些代碼:將自動加入一些代碼:
30、在在CEx06aApp和和CMainFrame類中類中 重新編譯連接即可重新編譯連接即可 有時需要加入一些代碼或對其中的一些參數有時需要加入一些代碼或對其中的一些參數代碼進行修改滿足應用程序的需要代碼進行修改滿足應用程序的需要Lab. of Marine Dynamic Simulation & ControlMFC Programming34ActiveX控件編程控件編程 ActiveX控件相當于一個封裝完好的控件相當于一個封裝完好的C+類類 Property(屬性屬性):相當于相當于C+類的成員變量類的成員變量 Method (方法方法) :相當于相當于C+類的成員函數類的成員函數
31、 Event (事件事件) :相當于相當于Windows控件發出的控件發出的notification消息,送給父窗口,通常是對話框消息,送給父窗口,通常是對話框Lab. of Marine Dynamic Simulation & ControlMFC Programming35 安裝新安裝新ActiveX控件控件: 拷貝相關文件到系統目錄下拷貝相關文件到系統目錄下(*.ocx,*.hlp,*.lic) 運行運行Regsvr32 注冊注冊 將想要的控件加到項目中:將想要的控件加到項目中:AddtoProject得到控件的得到控件的C+包裝類包裝類 在對話框模板中加入控件,設置屬性,加在
32、對話框模板中加入控件,設置屬性,加入事件函數;入事件函數; 或者在某個類中手工加入控件類,控件資或者在某個類中手工加入控件類,控件資源號,程序設置屬性,手工加入事件函數源號,程序設置屬性,手工加入事件函數Lab. of Marine Dynamic Simulation & ControlMFC Programming36 加入加入Windows Media Player控件:控件: Project-Add to Project-Compotents and Controls-Registed ActiveX Control- Windows Media Player 在非對話框窗口中使用:在非對話框窗口中使用: 在類聲明一串口控件類實例,由在類聲明一串口控件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家委會工作管理制度
- 庫房目視化管理制度
- 強化地板廠管理制度
- 影視器材室管理制度
- 微黨校黨員管理制度
- 心理與課堂管理制度
- 快手安全與管理制度
- 快餐廳考勤管理制度
- 總經理授權管理制度
- 感染科電梯管理制度
- 和美鄉村示范村規范方案
- 2025春季學期國開電大本科《人文英語4》一平臺機考真題及答案(第四套)
- 2025年政治經濟學考試題及答案回顧
- 政府采購評審專家考試真題庫(帶答案)
- (2025)國家版圖知識競賽(附含答案)
- 2025年高考志愿填報-12種選科組合專業對照表
- 《知識產權法學》一萬字筆記
- 2025安全生產月主題宣講課件十:主要負責人安全公開課
- 2025年安全生產月主題宣講
- 國開《外國教育簡史》形考任務1-3答案
- 人財保險公司202X年度行業作風建設工作匯報隊伍作風建設工作匯報.doc
評論
0/150
提交評論