程式设计课件

上传人:公**** 文档编号:578363510 上传时间:2024-08-24 格式:PPT 页数:46 大小:369.50KB
返回 下载 相关 举报
程式设计课件_第1页
第1页 / 共46页
程式设计课件_第2页
第2页 / 共46页
程式设计课件_第3页
第3页 / 共46页
程式设计课件_第4页
第4页 / 共46页
程式设计课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《程式设计课件》由会员分享,可在线阅读,更多相关《程式设计课件(46页珍藏版)》请在金锄头文库上搜索。

1、Windows 程式設計程式設計(使用使用 C+ / C#)PART 1PART 1July 2004July 2004程式设计PPT课件課程目的與基礎需求課程目的與基礎需求n n目的目的n n了解了解 Windows rich client Windows rich client 的寫作原理與方法的寫作原理與方法n n有能力製作專業的程式有能力製作專業的程式n n基礎需求基礎需求n nWindows Windows 的操作的操作n n命令列模式命令列模式n n帳戶帳戶 (account) (account)、服務、服務 (services) (services)、權限、權限 (privile

2、ge) (privilege)n nC / C+ C / C+ 程式設計程式設計n n物件型別物件型別 (class) (class) 與繼承與繼承 (inheritance) (inheritance)n n虛擬函數、虛擬型別虛擬函數、虛擬型別 (virtual function, virtual class) (virtual function, virtual class)n n模板模板 (template) (template)n nC# C# 程式設計程式設計n n這應列為補充的課程或教材這應列為補充的課程或教材程式设计PPT课件課程摘要課程摘要n nPart 1Part 1n n前

3、言前言n nUI UI 基礎觀念基礎觀念n nPart 2Part 2n nC# Windows Form C# Windows Form 程式設計程式設計n nPart 3Part 3n nMFC MFC 程式設計程式設計n nATL/WTL ATL/WTL 程式設計程式設計n nPart 4Part 4n nProcess and thread control in Win32 nativeProcess and thread control in Win32 nativen nProcess and thread control in .NetProcess and thread con

4、trol in .Net程式设计PPT课件前言前言Windows 程式的基本架構程式设计PPT课件Windows 的沿革的沿革n n1981 PC invented1981 PC inventedn n1985 Windows 1.01985 Windows 1.0n n1987 Windows 2.01987 Windows 2.0n n1990 Windows 3.01990 Windows 3.0n n1992 Windows 3.11992 Windows 3.1n n1995 Windows 951995 Windows 95n n1998 Windows 981998 Window

5、s 98n n2000 Windows ME2000 Windows MEn n1993 Windows NT1993 Windows NTn n2000 Windows 20002000 Windows 2000n n2001 Windows XP2001 Windows XPn n2003 Windows 20032003 Windows 2003n n2006 “Longhorn”2006 “Longhorn”Win16 SystemsWin32 SystemsWin32/Win64 Managed程式设计PPT课件多樣而龐大的多樣而龐大的 Windowsn nWindows Windo

6、ws 目前有三大產品線目前有三大產品線n n消費性電子消費性電子n n桌上型桌上型 PC PC 或工作站或工作站n n伺服器市場伺服器市場n n在不同的產品線上開發程式,雖然基本原理相同,在不同的產品線上開發程式,雖然基本原理相同,使用的工具相似,但在程式寫作上仍然是有差異使用的工具相似,但在程式寫作上仍然是有差異的的n nWindows Windows 是個非常龐大的系統,一般人不太可能是個非常龐大的系統,一般人不太可能學會全部的學會全部的 Windows programming Windows programmingn n所以若要進階的話,每樣都會很花時間的所以若要進階的話,每樣都會很花時

7、間的程式设计PPT课件Java 帶來的軟體革命帶來的軟體革命n nJava Java 是一種物件導向的程式語言是一種物件導向的程式語言n nJava runtime Java runtime 是一個虛擬機器是一個虛擬機器 (virtual machine) (virtual machine) 加上加上執行時期程式庫執行時期程式庫 (runtime library) (runtime library)n nJava Java 編譯器產生的是編譯器產生的是 intermediate code (Java bytecode) intermediate code (Java bytecode),而不是

8、該平台的原生碼,所以而不是該平台的原生碼,所以 Java Java 可以跨平台可以跨平台( (因為跨平台部份的複雜度已轉嫁到因為跨平台部份的複雜度已轉嫁到 JVM JVM 的開發者的開發者) )n nJava Java 較較 C C 慢,而且不能直接存取作業系統的資源慢,而且不能直接存取作業系統的資源n nJava VM Java VM 實作了許多高等的管理功能實作了許多高等的管理功能 ( (如如 garbage garbage collection, thread management )collection, thread management ),程式寫作上較為便利程式寫作上較為便利n

9、nJava Java 是一種軟體基礎架構是一種軟體基礎架構 (framework) (framework)n n當然,所有的人都必須用當然,所有的人都必須用 Java Java 來寫程式才行,真鴨覇來寫程式才行,真鴨覇程式设计PPT课件Microsoft .Netn n微軟把微軟把 Java Java 的概念的概念 copy copy 過來,創造的軟體架構過來,創造的軟體架構n n.Net .Net 是以是以 C# C# 和和 C+ C+ 寫成的寫成的n nC# C# 和和 Java Java 非常相似,主要的不同是在非常相似,主要的不同是在 design decision design de

10、cision 上,上,Java 1.5 Java 1.5 採用了許多採用了許多 C# C# 的特色使兩者更為相近的特色使兩者更為相近n n.Net .Net 架構是架構是 language-independent ( language-independent (語言無關語言無關) )n nCLR (Common Language Runtime)CLR (Common Language Runtime)n n編譯器產生編譯器產生 MSIL (Microsoft Intermediate Language) MSIL (Microsoft Intermediate Language)n n微軟將

11、微軟將 .Net .Net 上的程式稱為上的程式稱為 managed codemanaged code ( (因為有因為有 garbage garbage collection collection 的關係的關係) )n n所以所以 .Net .Net 上的程式比上的程式比 native code native code 慢慢程式设计PPT课件Windows 的架構的架構HAL (Hardware Abstraction Layer)KernelUserGDIDevice DriversCLRNetwork ClassesWindowsFormsASP.NETADO.NET“Avalon”“W

12、inFS”“Indigo”Collaboration ServicesBase ServicesIO Mgrnetwork protocol stackStorageSecurityTransactionServicesDirect XGraphics / Audio / Window ManagerNetwork ServicesMgmtServicesNDIS程式设计PPT课件Windows Kernel 的演進的演進APAPUser ModeKernel ModeSystem ServiceFile SystemMemory and I/O managementProcessor Sch

13、edulerHardwareAPAPUser ModeKernel ModeOS subroutinesSystem ServiceHardwareAPUser ModeKernel ModeHeapServiceNetworkServiceFileServiceDisplayServiceSENDREPLYCLIENTSERVERMicro KernelHardware從 Windows NT 4.0 起,Windows就是 microkernel 的架構程式设计PPT课件Windows 的開發工具的開發工具n nWindows Windows 上的開發工具非常的多,主流使用仍然是以微軟上的

14、開發工具非常的多,主流使用仍然是以微軟自家的自家的 Visual Studio Visual Studio 為主為主n nVisual Studio Visual Studio 是一套整合環境,可以讓你選擇你所喜好的是一套整合環境,可以讓你選擇你所喜好的程式語言程式語言 (Basic, C+, C#, Java) (Basic, C+, C#, Java) 來開發程式來開發程式n n除了除了 Visual Studio Visual Studio 之外,微軟也有發行各種不同的之外,微軟也有發行各種不同的 SDK SDK (Software Development Kit)(Software D

15、evelopment Kit),這些,這些 SDK SDK 一般均需搭配一般均需搭配 Visual Visual Studio Studio 來使用來使用n n唯一的例外是唯一的例外是 .Net Framework SDK .Net Framework SDKn n微軟所有的文件和程式都整合在微軟所有的文件和程式都整合在 MSDN (Microsoft MSDN (Microsoft Documentation Network) Documentation Network) 中,你可以依你的需要,向中,你可以依你的需要,向 Microsoft Microsoft 訂閱訂閱 ( (http:/h

16、ttp:/) )n n微軟對微軟對 Visual Studio Visual Studio 的中文化太徹底反而不好用,請愛用的中文化太徹底反而不好用,請愛用英文版英文版程式设计PPT课件開發工具的安裝與使用開發工具的安裝與使用n n實機演示n nVisual Studio 2003Visual Studio 2003n n安裝安裝n n使用說明使用說明 ( (以以 Hello World! Hello World! 程式來示範命令列及程式來示範命令列及 IDE IDE 操作,並說明如何使用除錯器操作,並說明如何使用除錯器 (debugger) (debugger)n nMSDNMSDNn n安

17、裝安裝n nMicrosoft Platform SDKMicrosoft Platform SDKn n安裝安裝程式设计PPT课件Windows 程式的種類程式的種類n n以包裝型式來分n nEXEEXE、DLLDLLn n以 message loop 來分n nWindowWindow、ConsoleConsolen n以 .Net 的觀念來分n nManagedManaged、Unmanaged (Native)Unmanaged (Native)程式设计PPT课件何謂何謂 DLL?n nDynamic Linked LibraryDynamic Linked Libraryn n和和

18、UNIX UNIX 世界中的世界中的 .so .so 檔相似,在執行的時候依需要再檔相似,在執行的時候依需要再載入的程式庫載入的程式庫n n同樣的同樣的 API API 可供許多不同的程式叫用可供許多不同的程式叫用n n載入載入 DLL DLLn nDLL DLL 和叫用它的程序和叫用它的程序 (process) (process) 使用相同的定址空間,使用相同的定址空間,你可以用你可以用 implicit implicit 或或 explicit explicit 的方式來使用它的方式來使用它n nExplicit: Explicit: 用用 LoadLibrary()LoadLibrary

19、()這個這個 API API 來載入來載入 DLL DLLn nImplicit: Implicit: 當第一次叫用該當第一次叫用該 DLL DLL 的的 API API 時,讓時,讓 Windows Windows 自己去找尋並載入自己去找尋並載入 DLL DLLn n實際演練:實際演練:DLL DLL 版本的版本的 Hello, World! Hello, World! 程式程式程式设计PPT课件何謂何謂 DLL Hell?n nRoot of all evils: Root of all evils: 不當的版本控制所造成的悲劇不當的版本控制所造成的悲劇n nFoo.DLL v1.0 F

20、oo.DLL v1.0 有個有個 API API 叫叫 HelloWorld(Foo* A) HelloWorld(Foo* A)n nFoo.DLL v2.0 Foo.DLL v2.0 也有個也有個 API API 叫叫 HelloWorld(Foo2* B) HelloWorld(Foo2* B),但,但 Foo2 Foo2 和和 Foo Foo 不一樣不一樣n n當用到當用到 Foo.DLL 1.0 Foo.DLL 1.0 的程式載入的卻是的程式載入的卻是 Foo.DLL 2.0 Foo.DLL 2.0 時時就會發生當機的錯誤就會發生當機的錯誤n n如何避免如何避免 DLL hell D

21、LL helln n不要相信微軟說他們解決了不要相信微軟說他們解決了 DLL Hell DLL Hell 的問題,它的問題,它從未真正的解決,只能加以控制從未真正的解決,只能加以控制n n做好版本控制,確保做好版本控制,確保 API API 的的 backward compatibility backward compatibilityn n你才是解決你才是解決 DLL hell DLL hell 的關鍵的關鍵程式设计PPT课件Windows 版的版的 Hello World 程式程式n nHelloWin.cHelloW ncl hellowin.c user32.lib gdi32.lib

22、cl hellowin.c user32.lib gdi32.libn nWindows Windows 程式設計是物件導向式的程式設計是物件導向式的n n程式的主要工作之一就是處理各個程式的主要工作之一就是處理各個 window window 間的關係間的關係 (i.e. (i.e. 處理處理 window message) window message)n n典型的誤解:物件導向程式設計只能用物件導向程式典型的誤解:物件導向程式設計只能用物件導向程式語言來完成語言來完成n n物件導向程式設計的意義是:著眼於實作物件之間的物件導向程式設計的意義是:著眼於實作物件之間的關係關係n n使用物件導

23、向程式語言,在程式設計時較為便利使用物件導向程式語言,在程式設計時較為便利 (syntactic sugars)(syntactic sugars)程式设计PPT课件Windows 程式是如何執行的程式是如何執行的?Windows Windows 程式進入點程式進入點 WinMain() WinMain()初始化動作初始化動作(Registering the Window Class)產生並顯示視窗產生並顯示視窗(Creating the Window) 訊息迴路訊息迴路 (The Message Loop)while (GetMessage(.) TranslateMessage(.); D

24、ispatchMessage(.); Windows Windows 訊息處理函式訊息處理函式(Processing Message)switch (message) case WM_MOUSEMOVE: : break:case WM_CHAR: : break;: case WM_CLOSE: : break;default: return DefWindowProc();return 0L;SystemQueue(30)WinApp 1PostMessage()WinApp nPostMessage().USER . EXE(2)WM_DESTROYWM_CLOSE &WinApp xx

25、SendMessage()(1)MessageFromQueueAPQueue(8)程式设计PPT课件Dont Call Me, I Call Youn nWindows Windows 會主動來呼叫你的程式,例如載入時呼會主動來呼叫你的程式,例如載入時呼叫叫 WinMain() WinMain(),有訊息進入時會呼叫,有訊息進入時會呼叫 WndProc() WndProc()n nWindows Windows 程式利用程式利用 message message 來區別各種不同的來區別各種不同的 callbackcallback,並藉由,並藉由 message queue message qu

26、eue 的特性來確保不會的特性來確保不會有有 call contention call contention 的情形發生的情形發生n nWindows Windows 作業系統保證作業系統保證 “Messages come in an orderly “Messages come in an orderly synchronized manner”synchronized manner”n nWindows Windows 程式經常藉由發送程式經常藉由發送 message message 來呼叫自己內來呼叫自己內部的函數,而不會直接叫用部的函數,而不會直接叫用n n這樣做的好處是什麼呢?這樣做

27、的好處是什麼呢?程式设计PPT课件Preemptive Multitaskingx86 CPU&Registers :statement n :AP1 Context Switch DataWindows 95/NT : statement m : statement x :AP2 Context Switch Data(4(4)繼續執行上回被Preempted 的指令註:如有多個 CPU, 可同時 active 多個 AP (2) (2) 儲存工作區資料(3)(3)決定控制權移轉 &將工作區資料載入 (1) (1) 當 timeslice 時間到 OS scheduler 將主動 停止 AP

28、1 程式的執行(5)(5)當 timeslice 時間到 OS scheduler將主動停止 AP1 程式的執行程式设计PPT课件Multi-Thread 多緒多緒n nProcess (Process (執行程序執行程序) ) 與與 thread ( thread (執行緒執行緒) )n nprocess process 本身不能執行,它只是提供安置資源本身不能執行,它只是提供安置資源 (resource) (resource) 的地方的地方n nthread thread 是是 Windows kernel Windows kernel 執行程式的最小單位執行程式的最小單位n n程式一開始

29、執行時,程式一開始執行時,Windows Windows 會替它建立會替它建立 process process,並,並給予一個給予一個 main thread main thread。Process Process 中可以建立多個中可以建立多個 thread thread,並讓它們同時執行並讓它們同時執行n n為什麼要為什麼要 multi-thread? multi-thread?n n提供較短的回應時間,避免被耗時的工作提供較短的回應時間,避免被耗時的工作 block blockn n徹底發揮徹底發揮 multiple CPU multiple CPU 或或 hyper-threading

30、hyper-threading 的能力的能力程式设计PPT课件Message 如何周遊各個如何周遊各個 ThreadSendMessage(). / window proc. WndProc() PostMessage().SynchronousAsynchronousSendMessage()SendMessage()PostMessage()PostMessage()同同 thread thread直接呼叫視窗函式直接呼叫視窗函式把訊息放在訊息佇列中,把訊息放在訊息佇列中,然後立刻返回然後立刻返回不同不同 threadthread切換到新執行緒中並呼叫視窗函切換到新執行緒中並呼叫視窗函式。

31、在該視窗函式結束前,式。在該視窗函式結束前,SendMessage() SendMessage() 不會返回。不會返回。PostMessage() PostMessage() 立刻返回,立刻返回,訊息則被放在另一執行緒訊息則被放在另一執行緒的訊息佇列的訊息佇列程式设计PPT课件作繭自縛作繭自縛Waiting Threadcase xxx: :case xxx: SendMessage (.); :Destination Thread / window procedure WndProc (.) : Other Thread : SendMessage (.); contextswitch co

32、ntext switchreentrant message ! context switch context switch context switch程式设计PPT课件Dont be a Pign nMessage Message 分成分成 queued ( queued (排隊型排隊型) ) 和和 non-queued ( non-queued (插隊型插隊型) ) 兩類兩類n nQueued messages Queued messages 會被會被 “post” “post” 到應用程式自己的到應用程式自己的 message queue message queue 中中n n這類這類

33、message message 包括鍵盤的按鍵、滑鼠的事件、包括鍵盤的按鍵、滑鼠的事件、timer (timer (計時器計時器) )、視窗重、視窗重畫,以及程式結束畫,以及程式結束 (WM_QUIT) (WM_QUIT)n nNon-queued messages Non-queued messages 直接被送到應用程式的直接被送到應用程式的 WndProc() WndProc()n n例如建造例如建造 window (WM_CREATE) window (WM_CREATE),menu menu 選單被選擇時選單被選擇時 (WM_COMMAND)(WM_COMMAND)n n所以所以 W

34、ndProc() WndProc() 必須要能保證是可以必須要能保證是可以 re-entrant re-entrant 的的n nDont be a pig: Get In and Get Out Fast!Dont be a pig: Get In and Get Out Fast!n n大部份的動作都靠大部份的動作都靠 message message 來完成,若有一個來完成,若有一個 message message 的處理非常的處理非常花時間,那這個視窗就會沒有回應花時間,那這個視窗就會沒有回應n n對於複雜的動作就必須造新的對於複雜的動作就必須造新的 thread thread 來因應及

35、處理來因應及處理程式设计PPT课件Managed Code? Native Code?n n需要需要 CLR CLR 才能執行的程式稱為才能執行的程式稱為 managed code ( managed code (或說是,被或說是,被編譯成編譯成 MSIL MSIL 的程式的程式) )n nNative code Native code 是指被編譯成是指被編譯成 x86 x86 機器語言碼的程式,它可以機器語言碼的程式,它可以是是 PE PE 格式的格式的 EXE EXE 檔,也可以是檔,也可以是 DLL DLL 檔檔n nManaged code Managed code 也是以也是以 EX

36、E EXE 或或 DLL DLL 的型式出現,但它們有的型式出現,但它們有包一層包一層 wrapper wrapper 程式,這個程式,這個 wrapper wrapper 程式會通知程式會通知 CLR CLR 來接來接手這個程式的執行手這個程式的執行 (EXE) (EXE) 或載入或載入 (DLL) (DLL)n n微軟在微軟在 .Net .Net 的文件中發明了一個新名詞的文件中發明了一個新名詞 “assembly” “assembly”,這個,這個字現在代表的意義是可以被載入並執行的一小段字現在代表的意義是可以被載入並執行的一小段 managed code managed code 程式

37、,它也代表程式,它也代表 managed code managed code 的基本執行的基本執行單位,一個單位,一個 EXE EXE 或或 DLL DLL 檔中可包入一個或數個檔中可包入一個或數個 assembly assembly程式设计PPT课件To .Net or Not to .Net?n n.Net .Net 在學理上是較為優越的系統在學理上是較為優越的系統n n速度合理速度合理 ( (你甚至可以用來寫你甚至可以用來寫 Quake II) Quake II)n n安全性穩定性都高,安全性穩定性都高,very programmer friendlyvery programmer fr

38、iendlyn n但是但是n n.Net framework .Net framework 的安裝和佔有率遠不及的安裝和佔有率遠不及 Windows Windowsn nWindows Windows 佔全世界佔全世界 PC 95% PC 95%,但,但 .Net .Net 目前不到目前不到 5% 5%n n.Net framework .Net framework 非常肥非常肥 (1.1 (1.1 版約版約 12MB 12MB,2.0 2.0 版未知版未知) ),在,在 deployment deployment 上或多或少造成阻礙上或多或少造成阻礙n nJRE 1.4 JRE 1.4 版才

39、版才 5.8M 5.8M 就一堆人不想裝了就一堆人不想裝了 n n.Net framework .Net framework 仍未完全成熟仍未完全成熟n nWindows form, enterprise services, Windows form, enterprise services, 程式设计PPT课件Windows 支援支援 Unicode#include int main(int argc, char* argv) printf(“Hello, world!n”); return 0;#include #include using namespace std;int _tmain

40、(int argc, _TCHAR* argv) cout _T(“Hello, world!n”) endl; return 0;程式设计PPT课件Windows 支援支援 Unicoden nWindows Windows 所支援的內碼可分為三個系統所支援的內碼可分為三個系統n nANSI, extended ANSI, code pageANSI, extended ANSI, code pagen nDBCS (multi byte characters, a.k.a. MBCS)DBCS (multi byte characters, a.k.a. MBCS)n nUnicode (

41、wide char, Unicode (wide char, wchar_twchar_t in C/C+) in C/C+)n nWindows Windows 各種語言的版本可自動地將原來的內碼和各種語言的版本可自動地將原來的內碼和 Unicode Unicode 做雙向轉換做雙向轉換 (e.g. BIG-5 (e.g. BIG-5 Unicode) Unicode)n n英文版除外,你必須自行安裝英文版除外,你必須自行安裝 MUI MUIn n和字串有關的和字串有關的 Windows API Windows API 通常都有兩個版本通常都有兩個版本n nWINUSERAPI int WI

42、NAPI MessageBoxA (HWND hWnd, WINUSERAPI int WINAPI MessageBoxA (HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);LPCSTR lpText, LPCSTR lpCaption, UINT uType);n nWINUSERAPI int WINAPI MessageBoxW (HWND hWnd, WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT

43、uType);LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); 程式设计PPT课件VC+ 如何處理如何處理 Unicode?n n新版新版 C+ C+ 規格已有規定規格已有規定n nstrlen()strlen() is for is for charchar, and , and wcslen()wcslen() is for is for wchar_twchar_tn nwchar_twchar_t 的字串必須以的字串必須以 L L 前導,前導,e.g. e.g. L”This is an L”This is an Unicode strin

44、g”Unicode string”n nVC+ VC+ 利用巨集利用巨集 (macro) (macro) 的技巧來減少程式寫作上的的技巧來減少程式寫作上的負擔負擔#ifdef _UNICODE #define _T(x) L#x #define _tcslen wcslen #define MessageBox MessageBoxW#else/ if MBCS #define _T(x) x #define _tcslen strlen #define MessageBox MessageBoxA#endif程式设计PPT课件I18N Super FAQn n字串並不是唯一的問題字串並不是唯

45、一的問題n n日期表示、金錢數字日期表示、金錢數字 這些統稱為這些統稱為 locale localen n相同的語言可能有不同的相同的語言可能有不同的 locale ( locale (英文美國、英文英國英文美國、英文英國) )n n.Net .Net 提供了非常優雅的方法來處理這些問題提供了非常優雅的方法來處理這些問題n nUnicode Unicode 不是做不是做 I18N I18N 的唯一途徑的唯一途徑n n最好動態載入最好動態載入 localized resource localized resourcen n.Net .Net 內才是完全內才是完全 Unicode Unicode

46、的環境的環境n n在在 MBCS MBCS 與與 Unicode Unicode 間轉換的話間轉換的話n nMultiByteToWideChar()MultiByteToWideChar()n nWideCharToMultiByte()WideCharToMultiByte()程式设计PPT课件Naming Convention (命名方式命名方式)n nWindows Windows 程式以往使用匈牙利命名法程式以往使用匈牙利命名法n nMSDN help: naming convention, variableMSDN help: naming convention, variable

47、n nms-ms-help:/MS.VSCC.2003/MS.MSDNQTR.2003JUL.1033/dnvsgen/hthelp:/MS.VSCC.2003/MS.MSDNQTR.2003JUL.1033/dnvsgen/html/HungaNotat.htmml/HungaNotat.htmn nVC+ VC+ 程式有很多大寫的程式有很多大寫的 Macro Macron n如如 LPINT LPINT,善加利用,善加利用 VC+ VC+ 的的 IntelliSense IntelliSense 功能加速熟功能加速熟悉悉n n.Net .Net 程式沒有特意追求程式沒有特意追求 namin

48、g convention naming conventionn n我個人依然使用,請參考我個人依然使用,請參考 Code Complete Code Complete 或或 Writing Writing Solid Code Solid Code 這兩本書中對這兩本書中對 naming convention naming convention 的探討的探討程式设计PPT课件UI 基礎觀念基礎觀念UI 就是 User Interface,要記住喔程式设计PPT课件認識認識 Windows 的視覺元素的視覺元素n n桌面桌面 (desktop) (desktop)n n桌面風格桌面風格 (the

49、me) (theme)n n工作列工作列 (task bar) (task bar)n n開始功能表開始功能表 (start menu) (start menu)n n快速啟動快速啟動 (quick launch) (quick launch)n n工作列工作列 (task list) (task list)n n語言列語言列 (language bar) (language bar)n n工具列工具列 (tray) (tray)n n小時鐘小時鐘 (clock) (clock)n n視窗視窗 (window) (window)n n標題列標題列 (title bar) (title bar)

50、n n標題標題 (caption) (caption)n n最小化最小化 (minimize button) (minimize button)n n最大化最大化 (maximize button) (maximize button)n n還原還原 (restore button) (restore button)n n求助求助 (help) (help)n n框架框架 (frame) (frame)n n視窗區域視窗區域 (client area) (client area)n nSDI, MDI, multi-SDISDI, MDI, multi-SDIn n系統選單系統選單 (syste

51、m menu) (system menu)n n對話盒對話盒 (dialog box) (dialog box)程式设计PPT课件基本的視窗元件基本的視窗元件Client AreaWindow FrameCaption BarWindow TitleSmall IconMinimize buttonMaximize / RestoreClose button程式设计PPT课件Windows 檔案總管檔案總管MenuCool BarPictureList View(sub-classed)Tree ViewStatus BarCombo Box(sub-classed)Scroll BarRes

52、ize程式设计PPT课件更複雜的範例更複雜的範例Static Text(Labels)Large IconList BoxText BoxCheck BoxRadio ButtonSpin ControlButton程式设计PPT课件視窗元件視窗元件 (controls)n n每個每個 control control 都是一個都是一個 window ( window (更精確地說,是更精確地說,是 child child window)window)n n微軟在製作微軟在製作 Windows Windows 時內建了一些標準化的視窗元件,稱時內建了一些標準化的視窗元件,稱為為 Windows

53、Common Controls Windows Common Controlsn n另外,微軟也把一些常用的對話盒標準化後做成元件供程另外,微軟也把一些常用的對話盒標準化後做成元件供程式人員呼叫,稱為式人員呼叫,稱為 Common Dialog Control Common Dialog Controln n你也可以製作自己的你也可以製作自己的 control control 並運用在你自己的程式中並運用在你自己的程式中n n.Net Framework .Net Framework 提供的提供的 control control 大多數是基於大多數是基於 Windows Windows Com

54、mon Control Common Control 的功能,以的功能,以 managed code managed code 將它包裝起來將它包裝起來n n但少部份並非如此,微軟直接修改底層的但少部份並非如此,微軟直接修改底層的 control control 使它可用於使它可用於 managed codemanaged code,因此,因此 .Net runtime .Net runtime 中會有些應屬於中會有些應屬於 Windows Windows 系統的系統的 DLL DLL 檔案檔案程式设计PPT课件視窗元件視窗元件 (controls)n nControl Control 的事件

55、的事件 (event) (event) 都是透過都是透過 window messages window messages 傳傳給父視窗給父視窗n nC# C# 會幫你處理這些會幫你處理這些 message message,並把對應的事件包裝成函數的型式,並把對應的事件包裝成函數的型式n nC+ C+ 的話,你得自己來,的話,你得自己來,MFC MFC 或或 WTL WTL 可以幫你減輕一些負擔可以幫你減輕一些負擔n nControls Controls 都有些都有些 “Properties” “Properties” 可供設定可供設定n nC# C# 當然是以該當然是以該 control ob

56、ject control object 的的 property property 型式存在型式存在n nC+ C+ 則必須透過則必須透過 API API 或其他方式來設定或其他方式來設定n n有些有些 control control 非常非常複雜,例如非常非常複雜,例如 Save As Save As 、GridGridn n從從 Windows XP Windows XP 開始有開始有 theme theme 的概念的概念n nTheme Theme 是用來增強視覺效果和磨練程設及美工人員用的是用來增強視覺效果和磨練程設及美工人員用的n nTheme Theme 會影響視窗元件的會影響視窗元

57、件的 look and feel look and feel程式设计PPT课件Windows UI 的種類的種類n n傳統的傳統的 Windows Windows 介面介面n nSDI: Single Document InterfaceSDI: Single Document Interfacen nHTML view: Symantec Norton Anti-VirusHTML view: Symantec Norton Anti-Virusn nMDI: Multiple Document InterfaceMDI: Multiple Document Interfacen nDial

58、og basedDialog basedn nHTML dialogHTML dialogn nMultiple top-level documentsMultiple top-level documentsn n實機演練實機演練: MFC application wizard: MFC application wizardn nXML basedXML basedn nXAML basedXAML basedn nPart of Windows “Longhorn” interface: “Avalon”Part of Windows “Longhorn” interface: “Avalo

59、n”程式设计PPT课件Windows UI 的開發的開發n n傳統的方法傳統的方法n n對於非對於非 dialog dialog 的視窗,你必須自己把東西畫上去的視窗,你必須自己把東西畫上去n nWM_PAINTWM_PAINT,所有東西都是用畫的,所有東西都是用畫的n n對於對於 Dialog Dialog,則可利用,則可利用 Resource Script (RC) Resource Script (RC) 來產生來產生n n所有所有 C+ based C+ based 的程式均是利用此方法的程式均是利用此方法n n可藉助可藉助 IDE IDE 來產生來產生 RC RCn n可以達到完全的

60、控制可以達到完全的控制n nWYSIWYGWYSIWYGn nWhat you see is what you getWhat you see is what you getn n一般而言需要一般而言需要 IDE IDE 的幫忙的幫忙 ( (並非絕對並非絕對) )n nVisual Basic, Delphi, JBuilder, Visual C#Visual Basic, Delphi, JBuilder, Visual C#程式设计PPT课件傳統的方法傳統的方法RC scripts(.rc)C+ source(.cpp .h)Resource Compiler(RC)C+Compiler

61、(CL)Object files(.obj)Compiled Resource(.res)Linker(LINK)Executable(.exe)程式设计PPT课件Get Some Flavorsn n實機操作:觀摩用的 Logon 程式n n使用使用 C# C#n n使用使用 MFC Wizard MFC Wizardn n使用使用 Platform SDK Platform SDK程式设计PPT课件MFCn nMicrosoft Foundation ClassesMicrosoft Foundation Classesn n利用利用 C+ C+ 的語法將傳統的語法將傳統 SDK SDK

62、包成較易使用的包成較易使用的 class classn n但這些類別的設計並不好,因為在它發明時但這些類別的設計並不好,因為在它發明時 C+ C+ 的語的語法仍未成熟法仍未成熟n n有許多的相關書籍、網頁、和協力廠商的支援有許多的相關書籍、網頁、和協力廠商的支援n n如果你的程式可以配合如果你的程式可以配合 MFC MFC 的限制,它仍是個不錯的的限制,它仍是個不錯的工具工具n nMFC MFC 的原始碼是學習的原始碼是學習 Windows Windows 程式的好地方程式的好地方n n從從 MFC 7.0 MFC 7.0 版起,版起,MFC MFC 已與已與 ATL ATL 類別進行更緊密的

63、整類別進行更緊密的整合合程式设计PPT课件ATL / WTLn nActive Template LibraryActive Template Libraryn n設計來製作設計來製作 COM (ActiveX) COM (ActiveX) 元件用的元件用的n n既不流行也不容易學,既不流行也不容易學,ATL 7.0 ATL 7.0 與之前的版本差異極大與之前的版本差異極大n n未來將被未來將被 .Net .Net 完全取代完全取代n nWindows Template LibraryWindows Template Libraryn n以以 ATL ATL 為基礎,將為基礎,將 SDK SD

64、K 包成較易使用的包成較易使用的 class classn n設計十分優良,文件嚴重缺乏,出來的時機太晚了設計十分優良,文件嚴重缺乏,出來的時機太晚了n nOpen SourceOpen Sourcen n不需任何不需任何 DLL DLL 即可執行,程式的大小非常的小即可執行,程式的大小非常的小n n你目前使用的微軟產品,有很大的可能是利用你目前使用的微軟產品,有很大的可能是利用 WTL WTL 做做出來的出來的程式设计PPT课件選擇使用的工具選擇使用的工具n n若你的程式有許多畫面和若你的程式有許多畫面和 control control 要處理的話,要處理的話,WSIWYG WSIWYG 是

65、最有效率的方式,此時是最有效率的方式,此時 VB6 VB6 或或 C# C# 是首選是首選n nDomain dependentDomain dependentn nPrototyping of software, or make a usable prototypePrototyping of software, or make a usable prototypen n隱藏的限制隱藏的限制n nMFC MFC 只有在你的程式符合它預設的狀況時才適用只有在你的程式符合它預設的狀況時才適用n n不然你會被它所限制,也許需要不然你會被它所限制,也許需要 hack MFC core hack MF

66、C core 來達成某些目的來達成某些目的n nWTL WTL 是不錯的工具,但自己要有解決問題的能力是不錯的工具,但自己要有解決問題的能力n nSDK SDK 太過千百力,除非必要請不要想不開太過千百力,除非必要請不要想不開n n程式非常程式非常 performance-sensitive and/or footprint-sensitive performance-sensitive and/or footprint-sensitiven n反正我爽,而且時間多反正我爽,而且時間多n n你仍然得知道你仍然得知道 SDK SDK 如何運作,以迎接各種挑戰如何運作,以迎接各種挑戰n n就算是就

67、算是 .Net .Net,它還是用,它還是用 SDK SDK 寫的寫的程式设计PPT课件尋求幫助尋求幫助n n幫助哪裡找?幫助哪裡找?n n咕狗大神咕狗大神 n n微軟的線上資源微軟的線上資源n nMSDNMSDNn nMicrosoft managed newsgroupsMicrosoft managed newsgroupsn nMicrosoft Microsoft 的社群組織網站的社群組織網站n nCodeProject CodeProject n nExpertExchange ExpertExchange n n注意你的態度注意你的態度n n法律沒規定高手一定要幫助你法律沒規定高

68、手一定要幫助你n n天助自助者天助自助者程式设计PPT课件G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9K

69、cNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr

70、$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7

71、JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRiU

72、mXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+A

73、2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePe

74、PhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&

75、w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9K

76、cOfRjUmXp!s&v)z0C4C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWo

77、Zr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#o#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1

78、C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgR

79、jUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdLdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u

80、(y+B2E6H6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(u(x+A2E5H9KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1

81、D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7I7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9L

82、dOgSjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8K8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo

83、#r%v(y0y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(x+B2E6H9KcOfRiUmXmUmXp!s&v)z0C4F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWkWnZr$u(x+A2E5H8KcNfQiUlXp#s%v)y0B程式设计PPT课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号