發表文章

目前顯示的是 2月, 2002的文章

Win32程式設計技術

圖片
//2002/2/21 酷小毅於永和 (1).Win32的記憶體管理 各位若有經過Win31時代,玩過Win31也就是Win16的應用程式應該會發現,在win16下的應用程式共用相同的記憶體位址空間,在Win31下所有被執行的應用程式(Process)他們會存取到一塊由Windows所提供的一塊記憶體空間,也就是說應用程式可能會不小心存取到被其他應用程式所使用的記憶體位址,嚴重時甚至造成系統死當.而在Win32下Windows會載入一種稱為保護模式(不是win9x當機時進去的保護模式),在這個模式下會由Windows來掌控所有的 應用程式 Process, Thread,所有的應用程式訊息,使用者所產生的訊息包括鍵盤滑鼠等訊息,都必須透過Windows來達成,包括應用程式之間要存取另一個應用程式的資料或存取CMOS/BIOS資訊都必須透過Windows來達成,所以Windows當然回提供一系列windows的介面來完成這些事,這個介面就是Win32 API(Application Programming Inteerface). (2).Event driven事件驅動概念 Windows是一個充滿訊息的環境,在Windows下不斷的都有訊息流動,有時是Windows的訊息有時為System的訊息,有時是User的訊息,給應用程式的訊息經由應用程式轉換成事件,在交由應用程式相對應的事件處理常式來處裡該事件,有些則可能是某應用程式Send給其他應用程式的訊息,有些是使用者透過鍵盤滑鼠所產生的訊息,若將訊息分類則可分為:(1)Windows message (2) Application message. (3)User message.等,不過若對應用程式而言訊息就是訊息沒什麼不同,應用程式通常會有如下的一個while迴圈來接收並指派訊息給對應的處裡常式處裡 while(GetMessage(&Msg, null, null, null)) {     TranslateMessage(&Msg);     DispatchMessage(&Msg); }  在Windows下每一個視窗裡都會有處裡這些訊息的處裡函式來處裡執行相對應的動作,Windows的程式設計師就是要負責來完成這些動作的程式碼,判斷訊息種類在加已處裡

從OLE到COM、Automation、ActiveX技術

圖片
//2002/2/3 //酷小毅 一、 COM 基本概論 1. 什麼是COM(Component Object Model). COM,在幾年前幾乎就已經微軟對於所開發軟體使用的一種標準,COM的前身其實就是微軟在1993年推出的OLE2,OLE(Object Linking and Embeded)物件的連結與崁入,為早期一種復合式文件技術,能單一的文件(也可說是物件)內崁連結另一份文件的技術,這已經是一種物件間連結溝通的一種協定的技術,當時有人稱為OLE Control,ActiveX,因為增早期對這些名詞的制定過於寬鬆,加上許多人很難區分出什麼是OLE什麼是ActiveX,其實它們指的都是以COM為基礎的技術。 COM是建構軟體的一種標準,在Win32下是行程與行程間溝通的一種基準,一種協定,COM是一種以物件導向(OOP)為基礎,是一個以二進位重複使用(Binary Reuse)為基礎的架構,這意味著COM不但發揮OOP的長處,二進位重複使用使COM並不需要任何原始程式碼就可重複使用,所以只要是支援COM的程式它們只要了解介面即可相互溝通不需寮解對方的實作以及使用何種程式語言。 2. COM 以介面為基礎的設計方式 以介面為基礎的程式設計方式可說是COM的精神,此部份觀念相當重要,觀念了解了在談如何充分發揮以介面為基礎程式設計的好處。   介面的構成(TypeLibrary) TypeLib為COM定義介面(Interface)一種二進位構成檔,TypeLib中定義了此COM物件中的Class(CoClass),方法(Method)及屬性(Property),TypeLib可為單獨的一個檔案(可能是.OLB或.TLB,.OLB檔案則為.TLB的前身,為早期的COM物件),也可能和.OCX或.DLL或.EXE Bind在一起。   IDL(Interface Definition Lenguage) 簡介 一個COM的Client在RunTime時連結到一個Object,但是它再編譯時還是得要告訴他COM Server提供給他什麼樣的方法屬性等,那COM當然要提供一個描述COM Interface及CoClass的一種標準,因介面是要被公開的,當然那就是IDL語言,既然COM就是要達到語言的獨立性,表示不