WinCE 定制 开始菜单问题

WinCE 定制 开始菜单问题

具体的修改,主要是修改WinCE500/PUBLIC/SHELL/OAK/HPC/EXPLORER/TASKBAR/stmenu.cpp文件
由于是在Windows CE内核源代码的基础之上进行修改的,所以没有将全部代码贴出来。将修改的主要部分内容,进行了说明。其中所需要的部分变量需要自己根据需要自定义。

第一:修改stmenuData数组
例如增加:{IDM_MOBILE, IDS_MOBILE, IDI_MOBILE, STATIC_ITEM, 0, 0, 0},
等,需要多个菜单的,可增加多行的内容

第二:为菜单定义背景图,并加载背景图:hbmStMenuBackGround

第三:在StartMenu_DrawMenuItem()的ODA_SELECT分支中,增加菜单背景绘制过程
if(hbmStMenuBackGround)
{
    HDC hdcmem = CreateCompatibleDC(lpdis->hDC);
    if(hdcmem)
    {
        SelectObject(hdcmem, hbmStMenuBackGround);

        BitBlt(lpdis->hDC, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, hdcmem, rc.left, rc.top, SRCCOPY);
        DeleteDC(hdcmem);
    }
}

第四:在StartMenu_ProcessCommand()函数中,处理菜单响应

    case IDM_MOBILE:
        info.cbSize = sizeof(info);
        info.fMask = SEE_MASK_NOCLOSEPROCESS  ¦ SEE_MASK_FLAG_NO_UI;
        info.lpVerb = NULL;
        info.lpFile = L"//ResidentFlash//MyMobileApp.exe";
        info.lpParameters = NULL;
        info.lpDirectory = NULL;
        info.nShow = SW_SHOW;
        info.hInstApp = NULL;
        ShellExecuteEx(&info);
    break;

最后:删除背景图资源
新添加菜单的图标和字符串,在下列两个文件中修改的
WINCE600/PUBLIC/SHELL/OAK/HPC/EXPLORER/MAIN/explorerbase.rc 文件和resource.h文件

按照此方法做了,但是现在的问题是开始菜单的背景没有修改成功

 

在StartMenu_DrawMenuItem()的ODA_SELECT分支中,增加菜单背景绘制过程
我是这样添加的:
        if(hbmStMenuBackGround)
        {
               HDC hdcmem = CreateCompatibleDC(lpdis->hDC);
                if(hdcmem)
                 {
                        SelectObject(hdcmem, hbmStMenuBackGround);
                         BitBlt(lpdis->hDC, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, hdcmem, rc.left, rc.top, SRCCOPY);//这里怎么获取开始菜单的区域??
                        DeleteDC(hdcmem);
                 }
        }
                                               
         if ((lpdis->itemState & ODS_SELECTED) && lpst->idMenuCmd)
            {
                HBRUSH hbrush = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
                SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
                FillRect(lpdis->hDC, &rc, hbrush);
                DeleteObject((HGDIOBJ)hbrush);
            }
            else
            {
                HBRUSH hbrush = CreateSolidBrush(GetSysColor(COLOR_MENU));
                SetTextColor(lpdis->hDC, GetSysColor(COLOR_MENUTEXT));
                FillRect(lpdis->hDC, &rc, hbrush);
                DeleteObject((HGDIOBJ)hbrush);
            }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值