CDesktopView类

 
Windows CE 桌面UI修改
桌面UI主要涉及到CDesktopView类 ,CDesktopView类继承于CDefShellView类;如果要更改桌面的UI表现形式,只要从这个类入手即可.CDesktopView类位于
    $(_WINCEROOT)/PUBLIC/SHELL/OAK/HPC/CESHELL文件夹中.
    
    
     1.更改右键弹出菜单选项
     桌面的弹出菜单有两种:一种是在桌面按右键弹出的FOLDER_VIEW_MENU_OFFSET;另一种是在图标上点右键弹出的ITEM_MENU_OFFSET.两种菜单的完整表现如下:
    
         /******************************************************
         //FOLDER_VIEW_MENU_OFFSET菜单
        查看             (pos:FOLDER_VIEW_MENU_OFFSET)
        --------------
        图标排列方式
        刷新
        --------------
        粘贴
        粘贴快捷方式
        --------------
        新建文件夹
        --------------
        属性
        *******************************************************/
       
        
         /******************************************************
         //ITEM_MENU_OFFSET菜单
        打开          (pos:ITEM_MENU_OFFSET)
        ----------
        剪切
        复制
        ----------
        删除
        重命名
        ----------
        属性
        *******************************************************/
       
     在弹出菜单之前,都需要调用CDesktopView::HandleInitMenuPopup()函数对菜单进行构建;所以,要更改菜单的选项,也是在此函数中进行.
     删除菜单子项可以通过::RemoveMenu()函数进行删除,有以位置(MF_BYPOSITION)或命令方式(MF_BYCOMMAND).
     例如:
     1.删除"复制"子菜单:
       ::RemoveMenu(hmenu, IDC_EDIT_COPY, MF_BYCOMMAND);
     2.删除ITEM_MENU_OFFSET菜单的第二个子菜单:
        ::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); //其后的菜单子项位置会上移
       
     以下这段代码FOLDER_VIEW_MENU_OFFSET只保留了"刷新","属性";ITEM_MENU_OFFSET只保留了"打开","属性"(夹杂在begin和end间是笔者加的代码)
    

LRESULT CDesktopView::HandleInitMenuPopup(HMENU hmenu, PopupMenuInfo * pPopupMenuInfo)
{
 
    LRESULT result = CDefShellView::HandleInitMenuPopup(hmenu, pPopupMenuInfo);

   if ((0 == result) && (FWF_DESKTOP & m_fFlags))
   {
      if (pPopupMenuInfo && (FOLDER_MENU_OFFSET == pPopupMenuInfo->offset))
      {     
             
                
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); // "View" sub-menu
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); // "View" separator
          
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); //"图标排列方式"
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //separator
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"粘贴"
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"粘贴快捷方式" 
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //separator
         ::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"新建文件夹"
       }        
      
      
      else if (pPopupMenuInfo && (ITEM_MENU_OFFSET == pPopupMenuInfo->offset))
      {
                
       
        ::RemoveMenu(hmenu, IDC_EDIT_CUT, MF_BYCOMMAND);
        ::RemoveMenu(hmenu, IDC_EDIT_COPY, MF_BYCOMMAND);
        ::RemoveMenu(hmenu, IDC_FILE_DELETE, MF_BYCOMMAND);
        ::RemoveMenu(hmenu, IDC_FILE_RENAME, MF_BYCOMMAND);
        ::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); //  separator
        ::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); //  separator
      } 
     
      
   }

  1.    return result;
     
    }
         那么增加菜单项如何实现呢,呵呵。。。^_^
        
    2.禁止拖拽桌面图标
          CDesktopView的拖拽处理是直接采用基类CDefShellView的DoDragDrop()函数.如果要禁止桌面图标拖拽,只要重载DoDragDrop()函数为空即可.
          在desktopview.h重载,代码如下:
          protect:
          virtual void DoDragDrop(NMLISTVIEW * pnmListView){};
              
    3.桌面图标排列顺序
         桌面图标排列顺序有按名称,类型,日期,大小以及还有一个自动排列;默认的是按名称排列.
         在CDesktopView中处理命令的是HandleCommand()函数,其实际是调用CDefShellView的HandleCommand()函数.为方便使用,我们可以以此方式调用:CDefShellView::HandleCommand(dwCmd);
         其中,dwCmd是命令类型,有如下宏定义命令:
         IDC_EDIT_COPY         :复制
         IDC_EDIT_CUT          :剪切
         IDC_EDIT_PASTE         :粘贴
         IDC_EDIT_PASTESHORTCUT     :粘贴快捷方式
         IDC_EDIT_SELECTALL       :全选
         IDC_EDIT_UNDO         :撤销
         IDC_FILE_DELETE        :删除
         IDC_FILE_NEWFOLDER       :新建文件夹
         IDC_FILE_OPEN         :打开
         IDC_FILE_PROPERTIES      :属性
         IDC_FILE_RENAME        :重命名
         IDC_FILE_SENDTO_DESKTOP    :发送到桌面
         IDC_FILE_SENDTO_MYDOCUMENTS  :发送到我的文档
         IDC_HELP_TOPICS        :(无作用)
         IDC_REFRESH          :刷新
         IDC_ARRANGE_AUTO        :自动排列
         IDC_ARRANGE_BYDATE       :按日期排列
         IDC_ARRANGE_BYNAME       :按名称排列
         IDC_ARRANGE_BYSIZE       :按大小排列
         IDC_ARRANGE_BYTYPE       :按类型排列
         IDC_VIEW_DETAILS        :详细信息查看
         IDC_VIEW_LIST         :列表方式查看
         IDC_VIEW_ICONS         :图标方式查看
         IDC_VIEW_OPTIONS        :查看选项(?)
         IDC_VIEW_TYPE         :查看类型(?)
         IDC_GO_MYDOCUMENTS       :转到到我的文档
         IDC_GO_FOLDERUP        :转到上级文件夹
         ID_ESCAPE           :ESC
         ID_CONTEXTMENU         :内容菜单(?)
        
         如果需要图标以日期方式初始化排列,只要在CDesktopView::CreateViewWindow()函数最后添加此语句即可:
         CDefShellView::HandleCommand(IDC_ARRANGE_BYDATE);
        
    4.更改桌面背景
在CDesktopView::PaintBackground中修改。

修改背景颜色:

// --- Original code commented out ---
// ::FillRect(hdc, &rc, ::GetSysColorBrush(COLOR_BACKGROUND));
// Explicitly set the background color.
::FillRect(hdc, &rc, ::GetSysColorBrush(RGB(230, 150, 230)));
修改显示的os版本信息(类似“windows ce.net 4.2")  
  
  
/* -- Original code commented out -- ::wsprintf(wszVersion, L"Microsoft Windows / CE v%d.%02d (Build %d on %s) ", VerInfo.dwMajorVersion, VerInfo.dwMinorVersion, VerInfo.dwBuildNumber, TEXT(__DATE__)); */ // Display shell name along with Windows CE version information. ::wsprintf(wszVersion, L"< Shell Name> for Microsoft Windows / CE v%d.%02d (Build %d on %s) ", VerInfo.dwMajorVersion, VerInfo.dwMinorVersion, VerInfo.dwBuildNumber, TEXT(__DATE__));

5.。。。。待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机多图,比较漂亮。800*480的。其他尺寸自己改SysInfo.ini文件 X,Y是坐标,IconPushed为图标的地址,SizePushed,SizeNormal图标的大小。 GLOBALSETTINGS ShowMessage = 0 Quitno X = 0 x方向的位置(后同) Y = 0 y方向的位置(后同) Width = 480 桌面背景图片宽度 Height = 272 桌面背景图片高度 Arrange = No 排列与否,和windows桌面排列一样 BackgroundBitmap = \SDMMC\app\PIC\background.bmp 显示桌面背景图片,可以修改成你想显示的图片名称及位置 StartUpAnimation = FlyUp Accelerated = yes TopMost = no #--------------------------------- DATE 显示日期的设置, x = 60 y = 3 Color = FFFFFF 字体颜色(后同) FrameColor = 000000 Size = 18 字体大小(后同) Weight = 700 CreateFont TIME 显示时间的设置, x = 155 y = 3 Color = FFFFFF FrameColor = 000000 Format = HH':'mm':'ss' 时间格式 Size = 18 Weight = 700 CreateFont Interval = 1000 刷新间隔,单位好像是毫秒 BATTERY 显示电池信息, x = 10 y = 5 Width = 38 Height = 16 ColorBattery = A0A0A0 ColorHigh = 00A000 ColorLow = A0A000 ColorCritical = A00000 Segments = 10 电池电量显示分块数 #--------------------------------- #--------------------------------- ICONXPBUTTON 自定义快捷方式,注意每节前后有#----作为分段 x = 420 程序图标的显示位置,X方向 y = 1 程序图标的显示位置,y方向 Command = \SDMMC\应用软件\Off.exe 应用程序位置名称 SizeNormal = 48 图标大小,不能小于图标文件的尺寸 SizePushed = 48 按下去后的图标大小 ScaleAlpha = 100 比例 Ic\SDMMC\图标库\off.ico 快捷方式的图标位置名称 ScaleAlpha = 100 比例 Ic\SDMMC\图标库\off.ico 按下去后的图标位置名称 Quitno 程序启动后是否自动退出,YES是的,no不关闭 TEXT 快捷方式的文字说明 x = 25 文字说明的显示位置,X方向 y = 150 文字说明的显示位置,Y方向 Text = 语音电子书 文字说明的内容 Color = FFFFFF 文字的颜色 FrameColor = 000000 背景框颜色 Size = 16 文字的大小 Weight = 700 CreateFont #--------------------------------- #--------------------------------- ICONXPBUTTON x = 5 y = -16 NewIni = ..\Navi\Navi.ini 运行下一个页面 SizeNormal = 48 SizePushed = 48 S

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值