Windows CE: 通過Application實現對鼠標光標的隱藏和顯示的控制

平臺FreeScale i.MX51

 

1. Define a global variable to determine if show the cursor
 
C:/WINCE600/PLATFORM/COMMON/SRC/SOC/COMMON_FSL_V2/IPUV3/DDRAW/ddipu.h
 
class DDIPU : public DDGPE
 
{
    protected:
           BOOL            m_bCursorHide;
 .. .
  
 
2.  Init the m_bCursorHide and create a thread to monitor cursor state
 
C:/WINCE600/PLATFORM/COMMON/SRC/SOC/COMMON_FSL_V2/IPUV3/DDRAW/ddipu.cpp
 
BOOL DDIPU::Init(VOID)
 
{
           m_bCursorHide = TRUE; // Hide cursor as default state
 
 
 
3. According m_bCursorHide, decide to do DDIPU::CursorOn or not.
 
C:/WINCE600/PLATFORM/COMMON/SRC/SOC/COMMON_FSL_V2/IPUV3/DDRAW/ddipu_cursor.cpp
 
VOID DDIPU::CursorOn(VOID)
{
...
           If (m_bCursorHide)
           {
                     // do nothing..
           } 
           else
           {
                     // handle the cursor state..
           }
...
}  
 
4. add wistron custom ioctl in the DrvEscape()
 
C:/WINCE600/PLATFORM/COMMON/SRC/SOC/COMMON_FSL_V2/IPUV3/DDRAW/ddipu_misc.cpp
 
#define DDIPU_CURSOR_HIDE     100100
 
#define DDIPU_CURSOR_SHOW  100101
 
ULONG DDIPU::DrvEscape(..)
{..
    switch(iEsc)
    {
     ...
           case DDIPU_CURSOR_HIDE:
                     m_bCursorHide = TRUE;
                     break;             
            case DDIPU_CURSOR_SHOW:
                      m_bCursorHide = FALSE;
                     break;
    ..
.. 
}
 
5. Test the ioctl in the app
 
#define DDIPU_CURSOR_HIDE     100100
 
#define DDIPU_CURSOR_SHOW  100101
 
 
 
HDC hdc; 
hdc = GetDC(hWnd); 
ExtEscape(hdc, DDIPU_CURSOR_SHOW, 0, NULL, 0, NULL); // Show cursor
 
ExtEscape(hdc, DDIPU_CURSOR_HIDE, 0, NULL, 0, NULL);
ReleaseDC(hWnd, hdc);

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