放上來自己翻譯的第一系列文章,是一個2D的開源免費的引擎叫HGE,官方網站http://hge.relishgames.com/,中文官方論壇http://www.hgechina.com。其實在論壇上已經有人翻譯完了這個系列的教程,不過排版和翻譯讀起來總覺得不盡如人意,就有了自己翻譯的打算。 HGE是用Direct3d來類比2D,硬體加速,功能強大,具體介紹請看官網和中文論壇。 本系列共8章,絕對自己翻譯,轉載請註明出處:http://blog.csdn.net/
Tutorial 02 – 使用聲音,輸入和圖象要渲染一些東西我們需要hgeQuad結構體。Quad是HGE的基本渲染元素。它包含4個頂點,順時針0到3。同時我們需要聲音效果的控制代碼。 hgeQuad quad; HEFFECT snd; 這裡我們放些遊戲需要的變數和常量。 float x=100.0f, y=100.0f;float dx=0.0f, dy=0.0f; const float speed=90;const float
Tutorial 03 – 使用 helper classes 這次我們會學習使用HGE的一些協助類。首先,包含所有需要的標頭檔並聲明HGE全域指標,大多數協助類都需要它。 #include <hge.h> #include <hgesprite.h>#include <hgefont.h>#include <hgeparticle.h> HGE *hge=0; 現在聲明HGE對象。 hgeSprite*
Tutorial 04 – 渲染紋理 首先我們聲明渲染對象的控制代碼和配合使用的精靈。 hgeSprite* tar; HTARGET target; 在一些事件期間,如視頻模式選擇,渲染對象的紋理控制代碼可能改變。所以我們在獲得新的渲染目標的紋理時寫GfxRestoreFunc函數。 bool GfxRestoreFunc(){ if(tar && target)
在一個程式中,用到了好幾個相同控制項的執行個體,現在希望能通過某種方法來唯一的標誌這些控制項執行個體,以便能為每一個控制項提供一個正確的設定檔,這是件很容易的事,但問題是並不希望控制項增加什麼ID,Name之類的屬性,而是希望能在控制項內部自行的標誌。這是我一個朋友問我的。初看了下,感覺這不太可能吧,後來,想到COleControl中有一個AmbientDisplayName,因此建議給這位朋友了。應該說,在VB或者DELPHI之類的容器中,這個函數是有用處的,但是總覺得畢竟AmbientDis
在上一步中我們實際是通過IDispatch介面的Invoke方法來訪問控制項的屬性和方法的,雖然有COleDispatchDriver和其它一些輔助函數,但還是有些繁雜,能不能直接得到控制項對象的指標,這樣就可以直接存取控制項了,甚至於控制項的內部變數了?答案是肯定了。我們的控制項派生自COleControl,COleControl派生自CWnd,CWnd又派生自CCmdTarget,我們的IDispatch介面就是在CCmdTarget中實現的(其實應該是實現在COleDispatchImpl
Tutorial 05 – 使用曲面變換 在這個教程中我們學習如何使用曲面變形,一種可以建立水面、透鏡、紙張甚至即時的變化。我們使用靜態紋理,但你可以渲染你的整個遊戲情境到一個紋理,通過扭曲網格來達到一些很酷的即時特效。首先包含標頭檔和變數的聲明。 #include <hge.h>#include <hgedistort.h>#include <math.h> HGE *hge = 0;HTEXTURE tex;hgeDistortionMesh *dis;
Tutorial 07 – 成千上萬的野兔 這篇教程示範HGE渲染多種混合模式。 建立精靈我們跳過所有的技術細節直接來到動作。首先建立並初始化一對精靈,用於"game objects"和背景。注意背景精靈是如何從小的64x64圖塊建立並在底部上色。 HTEXTURE tex, bgtex;hgeSprite *spr, *bgspr; tex=hge->Texture_Load("zazaka.png");spr=new hgeSprite(tex,0,0,64,64);spr->
Tutorial 08 – 天氣 這篇教程示範特效和燈光類比。天空的漸層我們用精靈渲染天空而不用紋理。 hgeSprite *sky; sky=new hgeSprite(0, 0, 0, SCREEN_WIDTH, SKY_HEIGHT); 它的上下頂點上不同的顏色,平滑過渡。 hgeColor colSkyTop;hgeColor colSkyBtm; sky->SetColor(colSkyTop.GetHWColor(),
網頁知道的並不多,不過似乎關於ActiveX控制項在網頁中的問題在所有關於ActiveX控制項的問題中所佔的比重相當的大,而其中最常問的就是,網頁中彈出來的安全警告。關於這個問題,並不複雜,網上搜尋一下可以找到一大片的回答,真正的是天下文章一大抄了。參考資料:http://www.newebug.com/article/cpp/2207.shtmlhttp://www.ccw.com.cn/htm/app/aprog/01_3_29_4.asphttp://msdn.microsoft.com/
一般情況下,我們在設計狀態下設計控制項時,會開啟屬性頁面,然後輸入幾個值,來初始化控制項,然後關閉屬性頁面,這樣在屬性頁面中輸入的值就儲存起來了,然後下次再開啟屬性頁面,這些值又會載入進來,這個過程有個術語叫持久化。從表面上看,控制項的持久化是在屬性頁面中完成的呢,但事實上控制項的持久化需要各方的配合,最終是由控制項的容器來完成真正的持久化操作(儲存或載入到某種介質,如磁碟檔案等)。屬性頁面在控制項的持久化中並沒有做多少的工作,它的主要工作是獲得和設定控制項的屬性(有時候可能會調用控制項的方法等
基本上翻譯自以下兩文http://support.microsoft.com/kb/172763/EN-US/#appliestohttp://support.microsoft.com/kb/181678一. 獲得所在IE頁面的URL1. 獲得IOleClientSite介面指標2. 調用IOleClientSite::GetMoniker()獲得client site的moniker對象指標3.
通常情況下,內製的圖片屬性頁面CLSID_CPicturePropPage能夠滿足需要,但有時候,也許你想有你自己的屬性頁面來設定你的圖片(IPictureDisp)類型的屬性,本文將講述如何做一個圖片屬性頁面 以上文中的例子為例(和上面的例子基本獨立,可以用新的例子來做,只是懶得弄了) 1.添加Picture屬性(get/set methods,LPPICTUREDISP類型),新增成員變數CPictureHolder m_pic; LPPICTUREDISP
CoCreateInstance中調用CoGetClassObject獲得IClassFactory(IClassFactory2),IClassFactory2又調用自己的CreateInstance或CreateInstanceLic建立控制項執行個體。這裡面類廠(IClassFactory)起到了非常重要的作用,特別是在MFC中,所有的控制項都派生自COleControl(COleControl又派生自CCmdTarget),而COleControl本身卻沒有實現任何的介面,包括IUnkn
OLE自動化集合類 在VB中有下面的這種文法Set docs = Application.DocumentsFor Each doc in docs MsgBox doc.TitleNext在這裡docs就是一個集合類,VB中還專門提供了一個Collection對象,可以組建你自己的集合類 當然,集合類還有許多特徵,一個集合類都會有下面的幾個方法或屬性 Count唯讀屬性 Item方法,可以帶1個或多個參數,返回集合內的對象,一般設定為集合類的預設屬性(方法)
該編譯器及運行環境採用虛擬機器執行方式,即將源檔案編譯為中間代碼(類似 Java 位元組碼),而中間代碼在虛擬機器(不是堆棧機,Java虛擬機器是“准堆棧機”,大部分指令是堆棧式的,但為了效率,也有小部分指令不是堆棧式的)上執行。 可用於編譯原理學習。
一客戶要求定製一對話方塊,顯示幾個資料,本以為幾分鐘就能搞定的事,卻突然被一要求砸暈:客戶要求其中一編輯框顯示百分比,而且小數點必須是兩位,也就是是說,如果是百分比為0的話,就要顯示0.00。雖然情急之下用CString來關聯編輯框,加上Format成員函數和scanf函數,也很快搞定。但也驚出一身冷汗,發現原來最簡單的東西下面還有不簡單啊。後仔細查閱資料,並翻看MFC源碼,發現確實沒有簡單的方法來實現。用CString作為變數,再定義一double變數,再轉換,這種方法也頗為可行,但是有一點,
http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c5519/Persist ActiveX Controls At
在VB設計ActiveX控制項時,UserControl可以訪問容器提供的擴充項物件Extender,比如VB,就提供了Visible,Tag,Name等等標準的擴充屬性和ToolTipText等等其它擴充屬性。那麼在用MFC設計ActiveX控制項時,是否也能利用到這個擴充屬性呢?能,COleControl提供了一個函數LPDISPATCH
理論上,一個平衡的二叉樹,可以在