《深入解析ATL》學習手札 -- 第一天 (ATL #1) (轉)
COM是操作的基本模型,從1993年建立以來,為Windows平臺的發展做出了不可磨滅的貢獻,而且自身還在不斷髮展。
對於一個在Windows下開發應用軟體的員來說,學習COM有多麼重要,為了能夠深入的學習COM技術,特從書店買回一本潘愛民譯的《深入解釋ATL》一書,希望能在這本書的指引下,一步一步進入ATL開發COM的殿堂。
今天是學習《深入解釋ATL》第一天,只看了一下譯序、原序、前言,就深受鼓舞,心裡暗暗下定決心,一定要學好ATL。
先動手做個例子吧,照著書依樣畫瓢,建立了一個有一個屬性和一個方法的求PI的ATL元件,編譯,呀差個,NineDigitsOfPiStartingAt,自已寫吧,看看書後,網上有原始碼,拖一個下來,把相關程式碼拷到自已的程式中,大功告成,編譯透過。
在VB中來試一下吧,在Project選單中的Component中把我的求PI元件加進來,用以下程式碼
Dim spi As
Dim str1 As String
Set spi = CreateObject("Pisvr.CalcPi")
spi.Digits = CInt(Text1.Text)
spi.CalcPi(str1)
MsgBox str1
怎麼spi.CalcPi(str1),請教了一下先學者,原來對於HRESULT CalcPi([out,retval]BSTR* pbstrPi);應該用str1 = spi.CalcPi來得到結果。在ATL中應該用*pbstrPi = SysAllocString(strbuf);來返回一段BSTR指向的空間,由的程式在使用後進行釋放。不過又有一個疑問,ATL可以執行在COM客戶的同一程式中,那麼分配的記憶體當然與客戶的記憶體在同一程式空間,SysAllocString分配的記憶體可以直接被客戶使用和釋放,但ATL可以與客戶在不同的程式空間呀,ATL的設計者會怎樣解決這些呢,現在剛開始,這樣的問題以後再思考吧。
管理它呢,先編譯成Release版吧。怎麼,不行,換UNICODE,還是不行,怎麼辦呢。De都可以呀,問問高手吧。Oh my god!,ATL的BUG,氣死我了。在Project Setting的C/C++屬性頁的Preprocessor definitions選項中去掉最後一個,終於透過了。
第一天,就到這裡吧。希望能在CSDN的鼓勵下好好學完這本書。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996549/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ATL中的Thunk機制學習 (轉)
- ATL Thunk機制深入分析
- ATL之深入淺出書評(潘愛民) (轉)
- WTL入門(1)-- ATL背景知識
- Developing COM Components using VC-ATL(1) (轉)dev
- 不使用ATL嚮導,建立一個簡單的ATL對話方塊程式. (轉)
- ATL元件中文路徑註冊問題 (轉)元件
- 利用ATL製作程式多媒體封面元件 (轉)元件
- 使用ATL建立支援IClassFactory2的COM元件 (轉)元件
- STL Container和ATL智慧包裹類的衝突 (轉)AI
- VC++、MFC、COM和ATL的區別C++
- Answers to your MFC/ATL questions from the Visual C++ .NET Product Manager (轉)C++
- 利用ATL實現QuickTime多媒體檔案播放 (轉)UI
- Developing COM Components using VC-ATL(2-3) (轉)dev
- Developing COM Components using VC-ATL(2-2) (轉)dev
- Developing COM Components using VC-ATL(3-3) (轉)dev
- Developing COM Components using VC-ATL(3-5) (轉)dev
- Developing COM Components using VC-ATL(3-4) (轉)dev
- Developing COM Components using VC-ATL(3-6) (轉)dev
- Developing COM Components using VC-ATL(3-7) (轉)dev
- ATL中使用點陣圖資源繪圖繪圖
- 使用VC++ ATL實現iStylePDF的COM外掛C++
- 解決:錯誤1 error C2440: “初始化”: 無法從“char *”轉換為“ATL::CStringTError
- 不用ATL框架純手工實現COM程式外回撥框架
- C Runtime Library來歷, API, MFC, ATL關係API
- DNS深入學習-1DNS
- 《Inside ATL/COM》第二期電子雜誌隆重發布 (轉)IDE
- MySQL優化學習手札(三)MySql優化
- VS2008中 ATL CLR MFC Win32 區別Win32
- MySQL深入學習-day1MySql
- JVM 深入學習:Java 解析 Class 檔案過程解析JVMJava
- MySQL深入研究--學習總結(1)MySql
- 深入學習golang(1)—陣列與切片Golang陣列
- go 第一天學習Go
- vue 第一天學習Vue
- 學習go第一天Go
- 學習HTML第一天HTML
- 學習java第一天Java