平台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);
在FreeScalei.MX51平台上,定义全局变量以决定是否显示光标,并初始化该变量及创建监控光标状态的线程。通过驱动指令自定义光标隐藏与显示操作,实现灵活的光标控制。测试光标状态通过调用特定的ioctl函数进行,以确保界面交互的顺畅。
1448

被折叠的 条评论
为什么被折叠?



