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);

发布了23 篇原创文章 · 获赞 31 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/memory01/article/details/6424389
ce
今日推荐