<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 帶你認(rèn)識(shí)WinCE Display驅(qū)動(dòng)開(kāi)發(fā)

          帶你認(rèn)識(shí)WinCE Display驅(qū)動(dòng)開(kāi)發(fā)

          作者: 時(shí)間:2018-09-05 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201809/388506.htm

          y:光標(biāo)移動(dòng)位置的y坐標(biāo)

          4.7 virtual SCODE BltPrepare(GPEBltParms *blitParameters)

          在做位塊傳輸前會(huì)先執(zhí)行該函數(shù),用于確定執(zhí)行BLT的函數(shù)

          blitParameters:指向一個(gè)GPE的位塊傳輸參數(shù)的結(jié)構(gòu)體

          4.8 virtual SCODE BltComplete(GPEBltParms *blitParameters)

          該函數(shù)用于釋放在BltPrepare中申請(qǐng)的資源

          blitParameters:指向一個(gè)GPE的位塊傳輸參數(shù)的結(jié)構(gòu)體

          4.9 virtual SCODE Line(GPELineParms *lineParameters, EGPEPhase phase)

          畫(huà)線函數(shù)

          lineParameters:指向一個(gè)GPE的Line結(jié)構(gòu)體,描述所畫(huà)的線

          phase:畫(huà)線所處的階段,具體描述如下

          gpeSingle:畫(huà)單根線

          gpePrepare:準(zhǔn)備畫(huà)線

          gpeContinue:畫(huà)線過(guò)程中

          gpeComplete:畫(huà)線完成

          在這里要提一點(diǎn),有時(shí)我們會(huì)看到在該函數(shù)中調(diào)用另一個(gè)函數(shù)WrappedEmulatedLine(..),這個(gè)函數(shù)在WinCE的PUBLIC目錄下的參考Display驅(qū)動(dòng)中也可以找到,該函數(shù)是一個(gè)快速的畫(huà)線函數(shù),里面采用了Bresenham畫(huà)線算法,通過(guò)采用運(yùn)行速度快的加減和移位運(yùn)算來(lái)完成畫(huà)線。

          4.10 virtual SCODE SetPalette(const PALETTEENTRY *pSource, USHORT firstEntry, USHORT numEntries)

          設(shè)置調(diào)色板

          pSource:指向一個(gè)調(diào)色板入口信息的結(jié)構(gòu)體

          firstEntry:第一個(gè)入口

          numEntries:入口的個(gè)數(shù)

          4.11 virtual int InVBlank(void)

          顯示設(shè)備是否處于垂直消隱期間

          上述函數(shù)在GPE類中均被定義為純虛函數(shù),需要在繼承類中實(shí)現(xiàn),也就是在我們的驅(qū)動(dòng)程序中實(shí)現(xiàn)。這些函數(shù)是必須實(shí)現(xiàn)的。根據(jù)顯示的需求,還可以在顯示驅(qū)動(dòng)中添加其他的函數(shù),比如對(duì)光標(biāo)的支持,對(duì)旋轉(zhuǎn)的支持等,如下:

          4.12 void CursorOn(void)

          使能光標(biāo)顯示。

          4.13 void CursorOff(void)

          禁止光標(biāo)顯示。

          4.14 void SetRotateParms(void)

          設(shè)置屏幕翻轉(zhuǎn)參數(shù)。

          4.15 void DynRotate(int angel)

          支持動(dòng)態(tài)翻轉(zhuǎn)。

          angel:翻轉(zhuǎn)角度

          4.16 ULONG *APIENTRY DrvGetMasks(DHPDEV dhpdev)

          獲得顯示模式的RGB掩碼

          dhpdev:指向掩碼信息,比如RGB565模式為(0xf800,0x07e0,0x001f)

          NOTE:該函數(shù)必須在驅(qū)動(dòng)中被實(shí)現(xiàn)。

          4.17 PowerHandler(BOOL bOff)

          電源控制。

          bOff:TRUE表示關(guān)閉電源,F(xiàn)ALSE表示打開(kāi)電源

          4.18 ULONG DrvEscape(DHPDEV dhpdev, SURFOBJ* pso, ULONG iEsc, ULONG cjIn, PVOID pvIn, ULONG cjOut, PVOID pvOut)

          該函數(shù)提供給應(yīng)用程序的一個(gè)直接訪問(wèn)顯示驅(qū)動(dòng)的接口,和流設(shè)備驅(qū)動(dòng)中的IoCtls函數(shù)類似。應(yīng)用程序通過(guò)調(diào)用ExtEscape函數(shù)傳送操作碼和數(shù)據(jù)給顯示設(shè)備驅(qū)動(dòng),DrvEscape函數(shù)會(huì)接收到數(shù)據(jù)并進(jìn)行處理,然后返回相應(yīng)結(jié)果給EstEscape函數(shù)。用戶也可以根據(jù)需要自己定義相應(yīng)的操作碼。

          dhpdev:設(shè)備句柄

          pso:指向一個(gè)繪圖平面的結(jié)構(gòu)

          iEsc:操作碼

          cjIn:輸入數(shù)據(jù)buffer的大小

          pvIn:指向輸入數(shù)據(jù)buffer

          cjOut:輸出數(shù)據(jù)buffer的大小

          pvOut:指向輸出數(shù)據(jù)buffer

          大致就是這些內(nèi)容,GPE類中的純虛函數(shù)是肯定要實(shí)現(xiàn)的,其他的一些函數(shù)根據(jù)需要來(lái)實(shí)現(xiàn)。我在寫(xiě)這篇Blog的時(shí)候,有些地方有些猶豫,開(kāi)始覺(jué)得自己語(yǔ)文水平不夠,不太會(huì)表達(dá),但是也許是因?yàn)樽约簩?duì)Display驅(qū)動(dòng)中的一些知識(shí)還是理解的不夠徹底吧。如果有什么問(wèn)題,請(qǐng)大家諒解,并請(qǐng)指點(diǎn)。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();