Advance Window Programming 游子宜. MFC 類別函式庫 MFC(Microsoft Foundation Class Library) 是一套 整合在 VC++ 中供開發視窗程式用的類別函式庫, 提供了豐富的類別函式供程式設計師來開發各類 的視窗應用程式。

Slides:



Advertisements
Similar presentations
FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
Advertisements

1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
學習C++的基本語法 認識關鍵字與識別字的不同 學習程式碼偵錯的流程 學習如何提高程式的可讀性
3Com Switch 4500 切VLAN教學.
PowerPoint2010 李燕秋 版面配置 版面配置指的是每一個頁面的內容配置 方式,不同的版面配置會有對應的母片。
指導教授:陳淑媛 學生:李宗叡 李卿輔.  利用下列三種方法 (Edge Detection 、 Local Binary Pattern 、 Structured Local Edge Pattern) 來判斷是否為場景變換,以方便使用者來 找出所要的片段。
1 第一章 Word 的基本觀念 內容概要: Word 的特色 啟動與離開 Word 的方法 滑鼠游標與外型的介紹 基本操作 Word 視窗法則 使用 Word 遭遇問題時, 應如何利用軟體特 性而獲得輔助解說.
倫理準則:機密性. Confidentiality By: Angela Lo. 倫理準則:機密性. Confidentiality 醫護人員有更多的機會接觸病患的隱私。 隱私包括兩方面︰一是病患的身體,另一 是有關病患的機密的訊息。 醫護人員有更多的機會接觸病患的隱私。 隱私包括兩方面︰一是病患的身體,另一.
五小專案 黃詩晴 章乃云. 目錄 計算機 智慧盤 拼圖 記憶大挑戰 數學題庫 心得 參考文獻.
Chapter 4 教學軟體融入教學  教學軟體有哪幾大類 ? 可以如何在教學上被 應用 ? 各有什麼優缺點 及使用要領 ?  教學軟體是是一種輔工具 能不能發揮功用取 決於教師如何運用 ( 淑珠 ) 以你認教科目 你覺 得哪些教學軟體可以配合你的教學需要 ? 你 要如何運用 ?  你對反覆練習軟體和遊戲軟體的看法.
Review of Chapter 3 - 已學過的 rules( 回顧 )- 朝陽科技大學 資訊管理系 李麗華 教授.
國立聯合大學 資訊管理學系 陳士杰老師 MySQL5 視覺化資料庫管理工具 - MySQL Adminstrator.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
例外處理. 內 容 大 綱 例外的產生 捕捉例外 丟出例外 例外的產生 (1/4) 一般常見的執行時期錯誤包括整數除法分母為 0(divide by zero) ,陣列索引值越限 (array index out of range) ,輸入輸出錯誤 (I/O error) 、檔案 不存在或無法存取.
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
Web Meeting 使用教學 ─ 學生版.  如何即時線上與老師互動? 一. 瀏覽太御科技首頁 二. 安裝 JoinNet 在首頁的左手邊 1. 下載 JoinNet 進行安裝 JoinNet.
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
PE 2 文書編輯 張基昇.
第 9 章 視窗應用程式的事件處理 9-1 事件的基礎 9-1 事件的基礎 9-2 表單事件 9-2 表單事件 9-3 滑鼠事件 9-3 滑鼠事件 9-4 鍵盤事件 9-4 鍵盤事件 9-5 表單的鍵盤事件 9-5 表單的鍵盤事件 9-6 控制項的事件 9-6 控制項的事件.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
3-3 使用幾何繪圖工具 Flash 的幾何繪圖工具包括線段工具 (Line Tool) 、橢圓形工具 (Oval Tool) 、多邊星形 工具 (Rectangle Tool) 3 種。這些工具畫出 來的幾何圖形包括了筆畫線條和填色區域, 將它們適當地組合加上有技巧地變形與配 色, 不但比鉛筆工具簡單,
圖層的操作與管理 圖層的作用就如同一張張透明的賽璐璐片, 你可以將動畫中的每項物件, 放置在不同圖 層中, 圖層交疊就形成完整的畫面。在各圖 層中的物件, 做任何的移動或變化, 都不會 相互干擾, 所以當你編輯一個物件時, 只要 在物件所在的圖層進行操作, 將可大幅降低 製作過程的複雜度與難度。
第12章 建立多表單與模組的應用程式 12-1 Visual Basic的方案與專案 12-2 模組化Visual Basic應用程式
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 參 資料蒐集的方法.
1 第 9 章 視窗應用程式的事件處理 9-1 事件的基礎 9-1 事件的基礎 9-2 表單事件 9-2 表單事件 9-3 滑鼠事件 9-3 滑鼠事件 9-4 鍵盤事件 9-4 鍵盤事件 9-5 表單的鍵盤事件 9-5 表單的鍵盤事件 9-6 控制項的事件 9-6 控制項的事件.
第 10 章 視窗應用程式的工具列與 功能表 10-1 主功能表控制項 10-1 主功能表控制項 10-2 快顯功能表控制項 10-2 快顯功能表控制項 10-3 工具列控制項 10-3 工具列控制項 10-4 狀態列控制項 10-4 狀態列控制項 10-5 字型與色彩對話方塊 10-5 字型與色彩對話方塊.
資料庫程式設計與系統管理 SQL Server 2005 Express 第六章 進階資料庫設計.
從此處輸入帳號密碼登入到管理頁面. 點選進到檔案管理 點選「上傳檔案」上傳資料 點選瀏覽選擇電腦裡的檔案 可選擇公開或不公開 為平台上的資料夾 此處為檔案分類,可顯示在展示頁面上,若要參加 MY EG 競賽,做品一律上傳到 “ 98 MY EG Contest ” 點選此處確定上傳檔案.
Chapter 17 Windows API 程式入門 VC++ 與 WindowsVC++ 與 Windows 建構遊戲設計的舞台 建構遊戲設計的舞台.
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
第二章第二章 Statistica 的工具欄. 本章目標:工具欄之使用 介紹 STATISTICA 是一個非常好用的統計軟體,只 要你對微軟的 Office 套裝軟體有較熟悉的瞭解, 那對 STATISTICA 的工具欄就非常容易掌握。 STATISTICA 的文件組織有四種類型,即 Workbook.
企二 A 管理程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0 企二 A 管理程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0許翠婷
Hung-Hsiang WuWindows Processing Design1 Chapter 4 簡單視窗程式 表單與標籤的屬性 按鈕與編輯的屬性 設計簡單的應用程式 表單常用事件 一般鍵盤及滑鼠常見的事件 表單視窗間的呼叫 表單間資料傳送應用 專案選擇設定.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
Management Abstracts Retrieval System; MARS 檢索操作.
CHAPTER 9 電腦 林麗娟‧教學媒體與操作. The Role of Computer for Learning  區別電腦輔助教學 (Computer –Assisted Instruction, CAI) 與電腦管理教學 (Computer – Managed Instruction,
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/25 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH 2.4~CH 2.6 &
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0 程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0許翠婷
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Chapter 10 m-way 搜尋樹與B-Tree
第12章 多重表單與模組的應用程式 12-1 VB.NET的方案與專案 12-2 模組化VB.NET應用程式 12-3 多重表單的應用程式
概念性產品企劃書 呂學儒 李政翰.
1/17 A Study on Separation between Acoustic Models and Its Application Author : Yu Tsao, Jinyu Li, Chin-Hui Lee Professor : 陳嘉平 Reporter : 許峰閤.
第 10 章 視窗應用程式的工具列與 功能表 10-1 功能表控制項 10-1 功能表控制項 10-2 快顯功能表控制項 10-2 快顯功能表控制項 10-3 工具列控制項 10-3 工具列控制項 10-4 狀態列控制項 10-4 狀態列控制項 10-5 字型與色彩對話方塊 10-5 字型與色彩對話方塊.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
1 第二十章 大型程式的發展 使用名稱空間 熟悉大型程式的開發方式 條件式編譯指令的撰寫. 2 名稱空間 名稱空間就像是一個管理介面,可以將定義的識別 字放在名稱空間之下,而不會有相互衝突的發生 名稱空間的語法如下 把變數 var 放在名稱空間 name1 內 要存取使用名稱空 間 name1 的變數.
INTRODUCTION TO MATLAB SHAWNNTOU. What Is MATLAB? MATLAB® is a high-performance language for technical computing. MATLAB® is a high-performance language.
著作權所有 © 旗標出版股份有限公司 第 3 章 資料庫物件的關係. 本章提要 Access 資料庫物件的關係 Access 資料庫物件的關係 簡介 Access 的七大物件 簡介 Access 的七大物件 Access 的群組 Access 的群組.
Outlook 教學與研習 (1) - 設定及收發郵件 - 設定郵件規則 陽明大學資訊與通信中心 陳坤元 2006/03/27.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 壹 企業研究導論.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
-Artificial Neural Network- Matlab操作介紹 -以類神經網路BPN Model為例
Visual C++重點複習.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
Windows Shell Programming Task Bar 重要參考資料 : ms-help://MS.MSDNQTR.2004JAN.1033/shellcc/platform/shell/programmersguide/ shell_int/shell_int_programming/taskbar.htm.
Presentation transcript:

Advance Window Programming 游子宜

MFC 類別函式庫 MFC(Microsoft Foundation Class Library) 是一套 整合在 VC++ 中供開發視窗程式用的類別函式庫, 提供了豐富的類別函式供程式設計師來開發各類 的視窗應用程式。

使用 MFC 開發視窗程式的優點 一、程式架構簡單 二、各類別功能涵蓋範圍廣 三、 簡化使用 Windows API 來開發程式的難度

應用程式與視窗物件 應用程式 物件 在應用程式 物件中生成 主視窗物件

快速鍵 滑鼠游標 功能表 工具列 對話方塊

視窗程式開發兩種架構 一 、使用 Windows API 二、使用 MFC 使用 MFC 來開發程式比較簡單,並且在 MFC 程式中 亦可直接呼叫使用 Windows API 中的函式。 不過在程式的執行效能上,使用 Windows API 所開發 出的程式在執行速度上則會比較快,對於講求執行速 度的程式,如遊戲程式,通常會以 Windows API 來做 為程式開發的基礎。

應用程式 MFCWindows API

處理事件訊息的概念 事件 按下滑鼠左鍵 移動滑鼠 發出訊息 訊息定義在訊息 表中 訊息末定義在訊 息表中 執行對應的 處理函式 不處理 訊息表

Create a MFC Project Create a MFC Project – 1. 建立一個空專案並設定該專案使用 MFC 。 – 2. 使用 MFC 專案精靈建立專案。 何謂訊息 (message) 何謂訊息 (message) –Standard System Message –Command Message 訊息處理的方法 訊息處理的方法 訊息處理的方法 –Using Macro: BEGIN_MESSAGE_MAP … … END_MESSAGE_MAP () 鍵盤與滑鼠訊息處理 鍵盤與滑鼠訊息處理 鍵盤與滑鼠訊息處理 Message Handle

訊息處理函式 訊息的類型大致可分為兩種: 一、物件上可能產生的事件所發出的訊息 二、指令訊息 我們可執行 ClassWizard 來查看所有的訊息類型 與指定要處理的訊息:

訊息處理的方法 在類別的定義檔中先宣告訊息表與訊 息處理函式。 在類別的定義檔中先宣告訊息表與訊 息處理函式。 在類別的實作檔中定義訊息表的內容 ( 包含所要處理的訊息並指定處理函式 ) 。 在類別的實作檔中定義訊息表的內容 ( 包含所要處理的訊息並指定處理函式 ) 。 使用訊息表的原則

1

.NET Message

2

How to work on Message BEGIN_MESSAGE_MAP( …, … ) ON_WM_MOUSEMOVE() ON_COMMAND(ID,Function) END_MESSAGE_MAP() BEGIN_MESSAGE_MAP( …, … ) ON_WM_MOUSEMOVE() ON_COMMAND(ID,Function) END_MESSAGE_MAP() afx_msg void classname::OnMouseMove(UINT nFlags, CPoint point) { //implement how you like your app works when mouse move } afx_msg void classname::OnMouseMove(UINT nFlags, CPoint point) { //implement how you like your app works when mouse move } afx_msg void Function() { … } afx_msg void Function() { … }

利用 ClassWizard 的功能,只要在某一 個所要處理的訊息上快按滑鼠兩下,便 可在程式中設定處理該訊息。 或是利用 Add Class 方法亦可加入新類別 。

新增訊息處理函式 假設現在程式要處理使用者在視窗中按 下滑鼠左鍵的訊息,那麼可在 ClassWizard 中選 擇要處理的訊息為「 WM_LBUTTONDOWN 」,該訊息代表在視窗中按下滑鼠左鍵:

指令訊息處理函式

指令訊息處理函式

刪除訊息處理函式

基本的滑鼠訊息類型 請仔細的思考當使用滑鼠來進行視窗螢幕 的操作時會有那些動作? 下表列出各個滑鼠訊息與相關處理函式: 鍵盤與滑鼠訊息處理

滑鼠訊息處理函式說明 WM_LBUTTONDBCLKOnLButtonDblClk 雙按滑鼠左鍵 WM_LBUTTONDOWNOnLButtonDown 按下滑鼠左鍵 WM_LBUTTONUPOnLButtonUp 鬆開滑鼠左鍵 WM_RBUTTONDBCLKOnRButtonDblClk 雙按滑鼠右鍵 WM_RBUTTONDOWNOnRButtonDown 按下滑鼠右鍵 WM_RBUTTONUPOnRButtonUp 鬆開滑鼠右鍵 WM_MOUSEMOVEOnMouseMove 滑鼠移動 WM_MOUSEWHEELOnMouseWheel 捲動滾輪

虛擬碼 虛擬碼說明 MK_CONTROL 按下 Ctrl 鍵 MK_LBUTTON 按下滑鼠左鍵 MK_MBUTTON 按下滑鼠中鍵 MK_RBUTTON 按下滑鼠右鍵 MK_SHIFT 按下 Shift 鍵

擷取視窗的滑鼠訊息 若程式本身必須監控滑鼠在螢幕上任何地方,即使 是在程式視窗外所發出的訊息,可以呼叫下面的這 個函式: CWnd* SetCapture( );

擷取視窗的滑鼠訊息 傳回目前取得滑鼠訊息接收權之視窗的指標,可以 呼叫下面的這個函式: CWnd* GetCapture( ); if (this == GetCapture())

若要釋放視窗監控滑鼠在視窗發 出訊息的權利,則必須呼叫下面 的這個 Windows API 函式: BOOL ReleaseCapture(VOID);

基本的鍵盤訊息類型 幾個常見的鍵盤訊息類型與對應的處理函式: 鍵盤訊息處理函式說明 WM_KEYDOWNOnKeyDown 按下鍵盤按鍵 WM_KEYUPOnKeyUp 鬆開鍵盤按鍵 WM_CHAROnChar 按下鍵盤按鍵,並傳回按鍵字元

指令介紹 int CWnd::MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT Ntype = MB_OK); int CWnd::MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT Ntype = MB_OK); CClientDC aDC(this); // 建立畫布 CClientDC aDC(this); // 建立畫布 aDC.SetPixel(point, RGB(r,g,b)); aDC.SetPixel(point, RGB(r,g,b)); COLORREF CDC::SetPixel(int x, int y, COLORREF crCOlor); COLORREF CDC::SetPixel(int x, int y, COLORREF crCOlor); COLORREF CDC::SetPixel(POINT point, COLORREF crCOlor); COLORREF CDC::SetPixel(POINT point, COLORREF crCOlor);

範例練習 課本的範例 課本的範例 實作範例 實作範例