wince下隐藏任务栏大概有以下几种方法:
(1)通过修改注册表; ( 问题是任务栏隐藏不彻底,总是有一条小横线在屏幕下方!)
(2)在应用程序初始化的时候中加入一段代码,将任务栏窗口隐藏。(问题是手写笔点到那个横线,任务栏还会弹上来)
(3)直接修改explorer的代码,重新编译连接。(比较彻底,任务栏没了,在桌面上你想找也找不回来了)
下面是方法3的实现:
hpc目录中的taskbar.hxx中有关于定义taskbar的高度的宏定义:
#define TASKBAR_HEIGHT 26
#define TASKBAR_HEIGHT_AUTOHIDE 5
改为:
#define TASKBAR_HEIGHT 0
#define TASKBAR_HEIGHT_AUTOHIDE 0
// 全屏
int cx, cy;
HDC dc = ::GetDC(NULL);
cx = GetDeviceCaps(dc,HORZRES)+GetSystemMetrics(SM_CXBORDER);
cy = GetDeviceCaps(dc,VERTRES)+GetSystemMetrics(SM_CYBORDER);
::ReleaseDC(0,dc);
//去除标题和边框
SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&(~(WS_CAPTION|WS_BORDER)));
// 置对话框为最顶端并扩充到整个屏幕
::SetWindowPos(m_hWnd,HWND_TOPMOST,-(GetSystemMetrics(SM_CXBORDER)+1),-(GetSystemMetrics(SM_CYBORDER)+1),cx+1,cy+1,SWP_NOZORDER);
//隐藏任务栏
LONG lOldWindowStyle;
RECT rectOldTaskBarRect;
HWND hOldhTaskBar = ::FindWindow(_T("HHTaskBar"),NULL);
while( hOldhTaskBar == NULL )
{
hOldhTaskBar = ::FindWindow(_T("HHTaskBar"),NULL);
Sleep( 1000 );
}
::GetWindowRect( hOldhTaskBar, &rectOldTaskBarRect );
::SetWindowPos( hOldhTaskBar, HWND_BOTTOM, 0, 0, 0, 0, SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);
lOldWindowStyle = GetWindowLong(hOldhTaskBar, GWL_STYLE);
::SetWindowLong( hOldhTaskBar, GWL_STYLE, lOldWindowStyle|WS_DISABLED );