WinCE 大排檔第一篇

  看了兩天的WinCE大排檔,norains寫的,總感覺懂得了點什麼又感覺沒有,還是寫點東西讓這種模模糊糊的感覺變得真實和確切點吧。

    第一章norians主要就講了個建立一個空的窗口,用WinCE建以前我也學過,主要就是CreateWindowEx這個函數的幾個參數的配置,還有對於註冊表的封裝,在WinCE中實現對註冊表的讀寫操作,將這些寫起來比較複雜的函數封裝成一個個簡單的直接調用的函數。

   第二章內容講的有點多,首先是對CMemDC進行封裝,這樣用緩存DC的時候更加方便。然後講了一個iPhone手勢滑動的特效,這個跟我之前做的文件瀏覽器的滑動過程相似,但他用的WinCE區別在於繼承了CMemDC,自定義消息響應函數。接着是CImager的封裝簡化,利用DirectDraw,調用CoInitializeEx初始化創建一個ImageFactory,然後讀取圖片文件並轉化爲Stream,結合這兩者創建合適的Decoder(解碼器),CreateImageDecoder,創建成功後必須TerminateDecoder,接下來就可以對解碼器就行初始化,然後開始解碼,這個解碼和結束解碼的操作都是固定的,注意在繪製Gif文件的時候還需要創建一個線程用來動態顯示,然後在線程中打開文件,設置當前幀,,獲取當前幀所需要的延遲時間,並且Sleep(),以及要知道獲取幀的總數,如果當前幀大於總數,則從0開始記。

  還講了一個BMP文件的保存,這個以前我也學過一點,BMP文件的組成是有三個部分,文件頭信息、圖片信息、數據。我們按照這三個部分信息參數給他賦值就能顯示BMP文件,不過有一點區別是以前說BMP文件的點是從左下角開始繪畫到右上角結束,而這裏似乎不需要這樣,還有對於計算文件頭信息時的bfSize,需要將點的個數分成4的倍數,即(picWidth * 3+3)/4 *4這樣即可,我覺得norains的算法有點複雜。

  最後講到了一個半透明的效果,這裏有一個關鍵的函數是::AlphaBlend(memDC.GetDC(),0,0,sizeMemDC.cx,sizeMemDC.cy, hdcBmp,0, 0,WND_WIDTH, WND_HEIGHT,blendFunction);

     第三章首先說了一個錄音的封裝,WAV格式的文件有4大塊,RIFF WAVE、Format、Fact和Data,文件頭的信息由一個WriteFileHeader完成,然後是waveInOpen,初始化錄製緩存,然後waveInStart(開始錄製),然後通過回調函數接收消息,將錄製的聲音數據保存到文件中,最後是停止錄製。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章