wince6.0下调整任务栏和工作区

转载 2015年07月07日 11:06:48

转载自http://blog.csdn.net/xiaolei05/article/details/7472262

1、  将任务栏提到窗口顶端

WINCE的整个窗口分为工作区WorkArea和动作栏TaskBar,一般默认为动作栏在底端总是显示在最前面,而工作区WorkArea就是除去动作栏所剩余的空间,他们的窗口定义都在目录PUBLIC/ SHELL/OAK/MYSHELL/CESHELL/EXPLORER/TASKBAR里面,可以找到TASKBAR.CPP和TASKBAR.HXX文件

在TASKBAR.HXX文件中有

#define TASKBAR_HEIGHT        26

#define TASKBAR_HEIGHT_AUTOHIDE 5

其中TASKBAR_HEIGHT为动作栏高度,TASKBAR_HEIGHT_AUTOHIDE为自动隐藏高度

在TASKBAR.CPP文件中(第550行)

修改void  CTaskBar::SlideWindow(HWND hwnd, const RECT &rcNew, BOOL fShow)

中的代码:

MoveWindow(hwnd, rcNew.left ,rcNew.top, rcNew.right - rcNew.left,

               rcNew.bottom - rcNew.top, FALSE);

注释掉,后面添加

MoveWindow(hwnd, rcNew.left, 0, rcNew.right - rcNew.left,

               rcNew.bottom - rcNew.top, FALSE);

第二个参数和第三个参数分别定义窗口的左端和顶端开始位置,rcNew.left默认是0,也没有修改的必要,rcNew.top= rcNew.bottom- TASKBAR_HEIGHT,而rcNew.bottom就是整个窗口的高度,所以我们只要修改rcNew.top为0就可以将整个任务栏提到窗口的顶端。

修改完编译过后可以看到这样的模拟器

2、  工作区整体下调TASKBAR_HEIGHT个高度

在修改完TakBar的时候,工作区在顶端是与之重合的,而底端又是有一条高度为TASKBAR_HEIGHT的空隙,所以接下来要修改的是将工作区的位置整体下调TASKBAR_HEIGHT个高度

 

可以在TASKBAR.CPP中找到函数

void CTaskBar::SetWorkArea(void)

下面是该函数的部分代码:

SetRect(&rcWorkAreaNew, 0, 0,

GetSystemMetrics(SM_CXSCREEN),  GetSystemMetrics(SM_CYSCREEN));

(这里是设置工作区域为全屏大小,类似于MoveWindow,第二个和第三个参数分别定义工作区的左端和顶端开始位置,我们将第三个参数修改为TASKBAR_HEIGHT,将工作区从原来的位置下拉一个任务栏的高度,这样在打开应用程序的时候就不会将被任务栏覆盖)

继续看下面的代码:

if (m_bTaskBarOnTop) //任务栏总在最前

    {

        if (m_bTaskBarAutoHide)//任务栏自动隐藏

        {

//新的工作区大小为底端减去任务栏的自动隐藏高度

           rcWorkAreaNew.bottom -= TASKBAR_HEIGHT_AUTOHIDE;

        }

        else

        {

         //新的工作区大小为底端减去任务栏的高度

            rcWorkAreaNew.bottom -= TASKBAR_HEIGHT;

        }

    }

   // currently, only the bottom will change,如果底端位置变了则执行重新设置工作区的大小

    if (rcWorkArea.bottom != rcWorkAreaNew.bottom)

    {

        SystemParametersInfo(SPI_SETWORKAREA, 0, (void*)&rcWorkAreaNew, SPIF_SENDCHANGE);

    }

 

从上面的代码我们可以看出工作区的设置是默认为任务栏在下面,然后当任务栏隐藏和自动隐藏不同的情况下只要调整底端高度就可以适应环境,我们现在的情况是任务栏到了顶端,相应的要调节工作区的顶端来适应环境,修改如下:

if (m_bTaskBarOnTop)

    {

        if (m_bTaskBarAutoHide)

        {

            rcWorkAreaNew.top += TASKBAR_HEIGHT_AUTOHIDE;//这里要调节顶端

        }

        else

        {

            rcWorkAreaNew.top += TASKBAR_HEIGHT;    //调节顶端高度

        }

    }

 

    // currently, only the top will change

    if (rcWorkArea.top != rcWorkAreaNew.top)

    {

        SystemParametersInfo(SPI_SETWORKAREA, 0, (void*)&rcWorkAreaNew, SPIF_SENDCHANGE);

   }

修改后如图:

3、  隐藏任务栏

在/WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN 目录,打开explorer.cpp 文件,在WinMain 函数里面屏蔽下面代码即可:

/*

// fork off a thread for the taskbar

 

    hTaskbarSyncEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    if (!hTaskbarSyncEvent)

    {

        goto Cleanup;

    }

    hThread = CreateThread(NULL, NULL, CreateTaskBar, &hTaskbarSyncEvent, 0, NULL);

    WaitForSingleObject(hTaskbarSyncEvent, INFINITE);

    // GetExitCodeThread(); // Test for failure?

    CloseHandle(hThread);

CloseHandle(hTaskbarSyncEvent);

*/

这里完成一个任务栏的创建工作

最后换个壁纸,如下图:

这里有个问题就是在修改动作栏的时候,修改的是CTaskBar::SlideWindow()函数,从函数功能上来看,该函数是完成一个窗口逐渐隐藏的一个功能(类似于QQ放在屏幕顶端会自动最小化在顶端),这和函数的名称滑动窗口是相匹配的,然而在全文档仅有的5个MoveWindow()函数中只有这个函数下的MoveWindow()函数修改后才起作用,费解~~~~~  希望达人们赐教~

wince隐藏任务栏与桌面图标

有的时候在系统启动之后,不希望看到wince的桌面和任务栏,也就是不希望用户看到wince系统界面。这就要隐藏任务栏,去除桌面的快捷方式,以及输出文本。       如,现在桌面的情况如图:     ...

Wince全屏或者隐藏任务栏

全屏使用示例: CScreenLG.ShowFullScreen( "你的窗体"); 隐藏任务栏: CScreenLG.ShowHHTaskBar(); 显示任务栏: CScreenLG.Hide...

wince隐藏任务栏与去除桌面图标 快捷方式

有的时候在系统启动之后,不希望看到wince的桌面和任务栏,也就是不希望用户看到wince系统界面。这就要隐藏任务栏,去除桌面的快捷方式,以及输出文本。        如,现在桌面的情况如图: ...

用按钮调整工作区大小

  • 2008年06月06日 16:46
  • 32KB
  • 下载

C# wince 任务栏的隐藏和挂起

  • 2012年08月21日 13:18
  • 33KB
  • 下载

wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】

[说明:部分代码来自网上 自己整理了下 与大家分享 代码有不足之处 请指出 我会修改滴] 废话小说,代码呈上.. 【1. 总览函数体】 【2. 界面(简洁版)】 【3. 源码】 ...
  • li0531
  • li0531
  • 2012年08月15日 13:52
  • 4273

WinCE下任务栏的显示与隐藏

  • 2013年12月23日 21:33
  • 17KB
  • 下载

wince任务栏隐藏

  • 2013年12月06日 10:15
  • 64KB
  • 下载

C# 无边框窗体的移动,任务栏右键菜单,调整大小

最近做了一个无边框的主窗体界面,过程中遇到了很多问题,解决的过程也费了不少精力,因此做完了之后就想把过程写下来,留个纪念,也给遇到同样问题的网友一点帮助。由于没有了边框,所以最大化、最小化、关闭等按钮...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wince6.0下调整任务栏和工作区
举报原因:
原因补充:

(最多只允许输入30个字)