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); } |
|