Time of Update: 2018-12-04
條款13:必須提前釋放COM組件時,別妄想智能指標幫你完成更多條款請前往原文出處:http://blog.csdn.net/liuchang5有了智能指標,或許你不會想到要自己手動釋放或者增加引用計數了。那麼請欣賞一下下面這個函數:void InSomewhere(IHello *pHello){ CComPtr<IHello> spHello = pHello; spHello->DoSomething(); HRESULT hr
Time of Update: 2018-12-04
條款15:以原則中的優先順序作為取捨的依據更多條款請前往原文出處:http://blog.csdn.net/liuchang5中國人常說的“魚和熊掌不能兼得”,而英語中常說“某某是一把雙刃劍”。從本質上來說這都反映了世界矛盾的,我們必須在其中做出取捨。然而,我更傾向於中國人的說法,因為它大有一種在矛盾發生之前就深思熟慮、三思而後行感覺。而等你意識到某種事物確實是一把“雙刃劍”時,往往矛盾已經發生了。當然有些矛盾是無法避免的。但是如果我們在設計之初多權衡一下利弊或許我們能從中獲得不少設計中的啟示,
Time of Update: 2018-12-04
The Google Maps API for Flash provides a new way to add interactive Google Maps to your website,using Adobe's Flash plugin to display dynamic map content! This API exists as a fully independentalternative to the existing JavaScript Maps API, and
Time of Update: 2018-12-04
首先你需要做的是從這裡擷取Google Maps API key然後從這裡下載Google Maps ActionScript 3.0 component接下去將zip壓縮包內的東西複製到工程的/libs/中就可以了。讓我們先來看一下Demo(可以右鍵View Source或點擊這裡察看原始碼):下面是完整代碼(或點擊這裡察看):Download: main.mxml<?xml version="1.0"
Time of Update: 2018-12-04
條款18:重載運算子不應當扭曲其語義更多條款請前往原文出處:http://blog.csdn.net/liuchang5_com_ptr_t在各種比較子上都調用了_CompareUnknown這麼一個函數,我們看看他到底做了什麼: template<typename _InterfaceType> bool operator<(_InterfaceType* p) { return _CompareUnknown(p) <
Time of Update: 2018-12-04
條款19:在介面完滿的前提下使之最小化。更多條款請前往原文出處:http://blog.csdn.net/liuchang5通過智能指標,如果我們需要提前結束一個COM組件的生命週期。則需要儘可能早的手動遞減其引用計數。CComPtr<IInterface> spInterface = pInterface ;...spInterface.Release(); //這樣做提前釋放掉引用計數,可以縮短COM的生命週期。//spInterface = NULL; 這一句和上一句等價。.
Time of Update: 2018-12-04
條款27:考慮__uuidof與uuid在關鍵字在不同編譯器上的相容問題更多條款請前往原文出處:http://blog.csdn.net/liuchang5你可能還記得條款11中提出的“不輕易捨棄編譯器為我們提供的安全機制”,我們因為提倡更加安全的代碼而使用了uuid 和__uuidof等關鍵字。它確實方便了開發,也使得開發的程式在類型上更加安全。但你可能會考慮到移植問題。我們不指望COM在非windows平台運行,但卻不是說C++開發COM只能在VC這個編譯器上編譯。如果沒有VC的話,使用__
Time of Update: 2018-12-04
條款10:盡量減少智能指標和介面指標的混用更多條款請前往原文出處:http://blog.csdn.net/liuchang5在開始一節之前,讓我們先來看一個例子:void func(void){ ICalculator *pCalculator = NULL; CComPtr<ICalculator> pCalculator = NULL; hrRetCode = CoCreateInstance( //在這裡建立COM組件,引用計數為1。
Time of Update: 2018-12-04
Adobe APIs 主要包含corelib, mappr, flickr, youtube及加密等類庫. http://labs.adobe.com/wiki/index.php/Actionscript_3:resources:apis:libraries as3awss3lib 與 Amazon S3 互動的 Actionscript 3.0 類庫 http://code.google.com/p/as3awss3lib/ as3soundeditorlib 聲音編輯類庫
Time of Update: 2018-12-04
條款26:自動查詢介面帶來方便同時也潛藏危機更多條款請前往原文出處:http://blog.csdn.net/liuchang5如果你對條款5中_com_ptr_t簡介中的內容還有印象的話,那你會很清楚的記得這樣一些東西。_com_ptr_t會自動幫我們查詢適當介面,優點很明顯,它簡化了我們的開發,而CComPtr卻沒有這麼做。理由是什嗎?還是先看一段代碼吧:_COM_SMARTPTR_TYPEDEF(IA, __uuidof(IA));_COM_SMARTPTR_TYPEDEF(IB,
Time of Update: 2018-12-04
最近本人在Linux下自己編譯了一個MPlayer,結果出現/dev/dsp無法找到的問題,在網上搜了很多網頁,最後找到了兩個方法是可行的,分享出來供大家參考:方法一:使用#fuser -v /dev/dsp看看此檔案是否存在在/etc/sysconfig/modules目錄下建立一個檔案snd-pcm-oss.modules內容如下:#!/bin/shif [!-c /dev/dsp]then exec /sbin/modprobe snd-pcm-oss > /dev/null
Time of Update: 2018-12-04
JavaBean的屬性與一般Java程式中所指的屬性,或者說與所有物件導向的程式設計語言中對象的屬性是一個概念,在程式中的具體體現就是類中的變數。在JavaBean的設計中,按照屬性的不同作用又細分為四類:單值屬性;索引屬性;關聯屬性;限制屬性。本文主要介紹如何使用PropertyChangeSupport類來支援關聯屬性事件的觸發。1.關聯屬性關聯屬性,也稱之為綁定屬性。綁定屬性會在屬性值發生變化時,通知所有相關的監聽器。為了實現一個綁定屬性,必須實現兩個機制。1)
Time of Update: 2018-12-04
條款12:必要時使用attach() 和 detach()調整引用計數更多條款請前往原文出處:http://blog.csdn.net/liuchang5假設我們使用了一個第三方編寫的函數,或者它也是由我們編寫的,但僅僅是由於起初沒有使用智能指標。於是它的實現可能是如下這種樣子的:IView* GetView(int nIndex){ IView* pView = m_Views[nIndex]; pView->AddRef();
Time of Update: 2018-12-04
條款21:巧妙的將對象偽裝成指標更多條款請前往原文出處:http://blog.csdn.net/liuchang5我們來探討一下如何讓我的智能指標看上去更像是一個“指標”而不是一個“對象”。在這之前,我們來看看C/C++中指標的某些特性,以便我們更加精確的類比出指標的行為。指標是C/C++中一個有趣的產物。從根本上講他就是一個變數,變數能容納的整數值的取值範圍一般為某種平台上一個進程的最大地址空間。這個數值存放著進程地址空間中的具體值對象所在的地址。當我們使用一個指標時,可以進行如下這些操作:
Time of Update: 2018-12-04
條款22:果斷放棄二進位重用,而採用模版編寫智能指標更多條款請前往原文出處:http://blog.csdn.net/liuchang5你看到了很多智能指標是用模版編寫的,它們能讓智能指標應用於更多的類型之上。這個可以理解。但是所有介面從IUnknown“單源繼承”的概念會讓你有放棄模版這種複雜技術的念頭。你或許會想,如果那樣的話,我們就能塑造出一個二進位層級可重用的智能指標,而且沒有模版的參與,可以減少編寫過程中一些複雜的特化過程。看看下面這個智能指標是否適用:class
Time of Update: 2018-12-04
條款23:為例外條件準備應對策略。更多條款請前往原文出處:http://blog.csdn.net/liuchang5如果我們希望所設計出來的智能指標更加的智能,我們可能會想在他的建構函式上做文章,讓他能在構造之時通過傳入一個介面來構造其本身(類似_com_ptr_t的設計)。當然這個時候,傳入的介面可能並非與智能指標指向的類型相同,那麼可能你會編寫如下這麼一個函數來進行一個查詢操作:template <class T>class CMyComSmartPtr{public:
Time of Update: 2018-12-04
web頁上的無縫安裝,是Adobe AIR從技術角度促進推廣的一個有效手段,通過Adobe AIR的這一無縫安裝技術,可以在web頁面上檢測安裝Adobe AIR運行時、Adobe AIR應用程式,以及啟動運行Adobe AIR應用程式。要使用這一技術,首先需要flash
Time of Update: 2018-12-04
條款24:努力使得介面容易被使用而不易被誤用。更多條款請前往原文出處:http://blog.csdn.net/liuchang5你可能會發現_com_ptr_t並沒有禁止使用者調用其持有的介面指標的Release()函數和AddRef()函數。如果遇到一個粗心的程式員,可能程式就悲劇了:ICalculatorPtr spCalculator(CLSID_CALCULATOR);... spCalculator->Release(); //哦~ 悲劇了~ 本意是調用
Time of Update: 2018-12-04
adobeairinstaller.exe是windows下的air runtime的安裝程式。它是可以接受參數的哦,這個網上談到的很少,我也是偶然google到的(當時沒記下網址,失敗了)。據我目前知道的有兩個:-silent????????? 沒有任何提示地“安靜”安裝,這個參數很有用。注意在vista下一定要以管理員權限來執行,不然安裝失敗的-uninstall???? 卸載當有時候我們想把air安裝整合到別的程式裡的時候,-silent就有用了。
Time of Update: 2018-12-04
條款25:思考相容取地址操作符帶來的若干問題更多條款請前往原文出處:http://blog.csdn.net/liuchang5智能指標真的很神奇,他能讓我們順利完成如下這種操作: CComPtr<ICalculator> pCalculator = NULL; int nSum = 0; CoCreateInstance( CLSID_CALCULATOR, NULL, CLSCTX_INPROC_SERVER,