因專案下一步應用的需求,需要用directdraw來實現相應功能,因此先行做初步嘗試,建立乙個感性的認識。
眾所周知wince5支援directdraw,只是和pc下的還是有所不同的,在學習directdraw的時候就以public下的mosquito為例子進行學習,要讓這個程式在wince5下跑起來,還是要做一點改動的。
實現前提:
(1)要加入directdraw元件
(2)定製系統並生成sdk,並用此sdk編譯應用程式
(3)鏈結gxguid.lib,網上說的還需要uuid.lib和ddraw.lib,實際上在此例子中是不需要的,原因在下面描述。
修改(1)在執行到directdrawcreate時會報0xc0000005錯誤,原因可能與ddraw.lib有關。用從ddraw.dll動態獲取directdrawcreate指標來呼叫的方法,因此ddraw.lib不再需要鏈結。而在此例中,沒有其它的uuid使用,因此uuid.lib也不需要進行鏈結。
(2)directdrawcreate的第二個引數在使用上面的辦法獲取後,要由lpdirectdraw改為lpdirectdraw4
(3)執行createsu***ce建立overlay su***ce失敗,原因有兩個,如下
主要原因:顯示驅動ddraw功能有錯,改用另乙個bsp帶的顯示驅動問題解決,需要對兩個驅動進行比較找出問題所在。
次要原因:dwbackbuffercount由2改為1,為什麼只能有乙個buffer還需要深入了解。
(4)經過上述修改可以動態顯示,但底色沒有透明,去掉ddpfoverlayformats中關於yuv的兩個格式,只保留rgb565和rgba555兩種。
(5)前景色為綠色,而不是原有的黃色,估計與驅動中顏色索引有關,待深入了解。
從此例子來看,directdraw開發是先要建立乙個directdraw物件,然後建立prime su***ce和overlay su***ce,通過su***ce的操作顯示來達到動畫效果。
附:mosquito的基本流程
1、建立視窗
2、建立directdraw例項物件
3、設定螢幕為normal模式
4、建立主表面
5、判斷驅動是不否有overlay功能
6、建立overlay表面
7、載入位圖資源
8、配置overlay表面
9、設定計時器,迴圈變換位置並顯示
WinCE5讀核筆記
一 exception vector到底在 struct arm high是被wince5 kernel安放在0xfffd,0000位址的乙個結構體。這個結構體非常大,我說它大不是因為它的 member很多,而是它的每個member都是乙個非常大的陣列。主要是為了對齊到一些特殊的位址。我們知道在 c...
擴充套件wince5物理中斷
我的開發環境是s3c2450 wince5,需要用到eint20做鍵盤中斷,但是因為wince5 預設只支援64個物理中斷,而且bsp用到的irq last是eint16。因為eint4到eint16 都有用處,想通過將eint20移到64 以內並新增靜態對映的方法就行不通了,只能用動態分配的方法,...
WinCE下Socket程式設計
wince下socket程式設計 wince 不支援win32中socket非同步類 那個mfc類忘記啥名字了 在軟體開發中 網路程式設計 是必不可少的基本功了 本文所講的 socket 程式設計也就是網路程式設計中的一種形式 當然你如果想問我什麼叫 socket 很遺憾的是我也不能準確的告訴你!但...