Windows CE 5.0待机界面定制之二 - 开始菜单
开始菜单的修改效果如Windows CE 5.0待机界面定制(概述) 中所附图。
具体的修改,主要是修改: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分支中,增加菜单背景绘制过程
1 if(hbmStMenuBackGround) 2 { 3 HDC hdcmem = CreateCompatibleDC(lpdis->hDC); 4 if(hdcmem) 5 { 6 SelectObject(hdcmem, hbmStMenuBackGround); 7 BitBlt(lpdis->hDC, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, hdcmem, rc.left, rc.top, SRCCOPY); 8 DeleteDC(hdcmem); 9 } 10 }
第四:在StartMenu_ProcessCommand()函数中,处理菜单响应。如:
1 case IDM_MOBILE: 2 info.cbSize = sizeof(info); 3 info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI; 4 info.lpVerb = NULL; 5 info.lpFile = L"//ResidentFlash//MyMobileApp.exe"; 6 info.lpParameters = NULL; 7 info.lpDirectory = NULL; 8 info.nShow = SW_SHOW; 9 info.hInstApp = NULL; 10 ShellExecuteEx(&info); 11 break;
最后:删除背景图资源