windows mobile 菜单处理

sdl的缩放问题 SDL是一种既是开源的,也是跨平台的多媒体开发包,在各种平台上应用很广,经常和FFMPEG等解码器同时使用。对于在windows mobile等缺乏通用播放器的平台来说,是一种很好的选择。网上很多代码,介绍SDL的用法,主要需要注意的情况有3种:第一: 绑定播放窗口问题:char sdl_var[128];     sprintf(sdl_var, "SDL_WINDOWID=0x%lx", m_ 阅读详情

Menu的问题

 

在使用win32API进行创建一个菜单的时候,一般按照这样的步骤:

1, 在资源文件中创建菜单资源

2, 在窗体中加载资源

以上如windows+mobile编程中所提,可是操作完成以后却发现菜单没有被加载进来,寻找原因发现如下:

WM的菜单比较特殊,首先菜单本身是一个窗体,拥有句柄(HWND)并且可以通过::showWindow()函数进行显示和隐藏,这就是menu bar;

在创建一个新的窗体的时候,系统会默认创建一个空的menubar,例如在你刚刚创建的窗体上也是存在menubar的,只是上面只显示一个输入法的图标。

当然也可以隐藏掉menubar,不过隐藏前最好使用函数SHFindMenuBar(hwnd)获取当前menubar句柄进行保存。然后就可以对menubar进行隐藏显示操作了,就跟普通窗体操作一样。

   另外窗口创建的过程中,可以不使用系统的 menu bar ,自己动态创建 menu bar ,创建 menu bar :

 

 

1.创建并显示菜单
  SHMENUBARINFO mbi;
  ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
  mbi.cbSize=sizeof(SHMENUBARINFO);
  mbi.hwndParent=m_hWnd;
  mbi.hInstRes=::AfxGetInstanceHandle();
  mbi.dwFlags=SHCMBF_HMENU|SHCMBF_HIDESIPBUTTON;//隐藏SIP
  mbi.nToolBarId=IDR_MYMENU;
  SHCreateMenuBar(&mbi);

2.隐藏菜单

  /////////////(1)隐藏窗口上的所有菜单

  HWND hwnd=::SHFindMenuBar(m_hWnd);
  if(hwnd!=NULL)
  ::ShowWindow(hwnd,SW_HIDE);

/////(2)因为菜单本身也是定义为窗口,所以可通过其句柄来隐藏

::ShowWindow(mbi.hwndMB,SW_HIDE);

 



3.隐藏某个子菜单项
   TBBUTTONINFO tbbi = {0};
   tbbi.cbSize = sizeof(TBBUTTONINFO);
   tbbi.dwMask = TBIF_LPARAM | TBIF_BYINDEX;               
   ::SendMessageW(mbi.hwndMB, TB_GETBUTTONINFO,0, (LPARAM)&tbbi); //0为SK1,1为SK2(即左右软键)
   g_hMenu = (HMENU)tbbi.lParam;//g_hMenu为全局变量,这样就可以在任何地方隐藏子菜单了

  EnableMenuItem(g_Menu,ID_TEST,MF_GRAYED);//隐藏子菜单
  //显示子菜单
  EnableMenuItem(g_Menu,ID_TEST,MF_ENABLED);

  在使用语言Module时,要注意库中的ID与应用程序中定义的ID是否一致。

4.使某个SK(Soft Key)不可用
::SHEnableSoftkey(mbi.hwndMB,0,TRUE,FALSE);

 

5.子菜单打勾

 

 

HMENU hMenu;   

HWND hwndMenuBar = ::SHFindMenuBar(m_hWnd); //m_hWnd是窗口句柄  

tbbi.cbSize = sizeof(tbbi);   

tbbi.dwMask = TBIF_LPARAM|TBIF_BYINDEX;  

//三个参数1表示右菜单,为0表示左菜单  

 ::SendMessage(hwndMenuBar, TB_GETBUTTONINFO, 1, (LPARAM)&tbbi);   

hMenu = (HMENU)tbbi.lParam; //hMenu这个句柄就是菜单操作常用的句柄了,获得这个句柄非常有用。  

WORD ack =    CheckMenuItem(hMenu,ID_STARTUP,MF_BYCOMMAND|MF_CHECKED);  

 

 

 

参考blog

1. http://blog.youkuaiyun.com/lincyang/archive/2010/03/27/5422426.aspx

2. http://hi.baidu.com/bjwangc/blog/item/d4d2e882a2bbefac0df4d265.html

3. http://www.cppblog.com/gtwdaizi/articles/55157.html

基于.NET CF的Windows Mobile网页浏览应用实战项目 NET Compact Framework(.NET CF)是微软为资源受限的移动设备量身打造的轻量级运行时环境,专用于Windows Mobile和Windows CE平台的应用开发。其核心架构在保留完整版.NET Framework关键特性的同时,进行了深度精简与优化。// 示例:典型的.NET CF控制台入口点(仅支持有限的类库)该框架采用子集化类库设计,仅包含约1/3的桌面版BCL类,并通过JIT编译器适配ARM、MIPS等嵌入式处理器指令集。 阅读详情

相关推荐

移动端通讯录组织树https://github.com/yangjingyu/vs-tree

const data = [ {name: '上海分部', id: 2, pid: 0, children: []}, {name: '成都分部', id: 3, pid: 0}, {name: '广州分部', id: 4, pid: 0}, {name: '沈阳分部', id: 5, pid: 0}, {name: '张三', id: 6, pid: 0, isLeaf: true}, {name: '李四', id: 7, pid: 0, isLeaf: true}, {name: '王五', id: 8, pid: 0, isLeaf: true}, {name: '项目管理部', id: 1006, pid: 1}, {name: '张小虎', id: 1007, pid: 1, isLeaf: true}, {name: '王小二', id: 1008, pid: 1, isLeaf: true}, {name: '李小三', id: 1009, pid: 1, isLeaf: true} ] export default { data() { return { treeDate: data, props: { label: 'name', children: 'children', isLeaf: 'isLeaf' }, count: 1 }; }, methods: { handleCheckChange(data, checked, indeterminate) { console.log(data, checked, indeterminate); }, handleNodeClick(data) { console.log(data); }, limitCheck() { alert('超过最大限制数量'); } } };

如何修改菜单上的文字

 在windows mobile 上如何修改菜单上的文字呢?我原先也只是看别人的代码,然后copy过来自己用,有的时候弄不清楚所以然,就会出错。通过下面的方法,我们可以修改菜单上的文字:1HMENU hMenu=NULL;2    TBBUTTONINFO tbbi = {0};3    tbbi.cbSize = sizeof(tbbi);4    tbbi.dwMask = TBIF_

sandyqy的专栏 1683

MCSDK5.4.8电机库双电阻采样适配:从扇区判断到固定采样的重构实践

本文详细解析了MCSDK5.4.8电机库中双电阻采样技术的重构实践,从扇区判断到固定采样的关键步骤。通过硬件配置优化、核心文件重构及电流读取函数改造,实现高效稳定的电机控制,特别适用于成本敏感型项目。文章还提供了占空比限制计算、参数调整及常见问题排查等实用技巧,助力工程师快速掌握两电阻采样方法。

weixin_42532938的博客 279

VC 弹出菜单及菜单项如何响应

新建的是单文档工程(windows mobile工程)     在视图中界面上触发一个消息弹出一个菜单来,代码如下:        CMenu menu;  menu.CreatePopupMenu();  CPoint point;  GetCursorPos(&point);  menu.AppendMenu(MF_STRING,MENU_TEST1,_T("TEST1"));  me

love19840109的专栏 1892

数通基础(基本网络通信原理、IP地址如何配置、DHCP、DNS域名系统、路由技术基础、静态路由 、TCP和UDP、vlan虚拟局域网、trunk、三层交换)

我们知道了1、电脑开机,通过dhcp获取ip地址2、电脑输入域名,www.baidu.com电脑把www.baidu.com发到自己的dns服务器3、dns服务器把域名解析成对应的ip地址4、电脑向百度服务器发送一个请求。

qq_53235556的博客 6473

PowerDesigner16.5下载和安装教程

一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3....

cicong2374的博客 10万+

Windows Mobile窗口全屏总结

Windows Mobile窗口全屏总结 TO:ALL 经过细致研究和严格测试 负责任的给出《史上最全面的Windows Mobile窗口全屏总结》 开发和测试环境: VC2005 智能MFC 测试样机:dopod E616 -------------------------------------------------------------------

tozheng的专栏 2137

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真

  本文是对文献 [1] 的复现。 关于阻抗控制   阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Imped.

-贝塔- 的博客 2万+

Windows Mobile窗口全屏总结(zhuan)

TO:ALL 经过细致研究和严格测试 负责任的给出《史上最全面的Windows Mobile窗口全屏总结》 开发和测试环境: VC2005 智能MFC 测试样机:dopod E616 ------------------------------------------------------------------- 第一点:全屏到底用什么API最好 在MSDN、网络资

aikker的专栏 727

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2235

芒果YOLOv8改进72:动态标签分配策略篇之ATSS:自适应训练样本选择Adaptive Training Sample Selection策略

YOLOv8代码实践|ATSS标签分配策略改进🥭

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2906

[转贴]在windows mobile下显示系统图标

<br />引用:http://www.cnblogs.com/answer/archive/2009/03/23/1419741.html<br /> <br />As a Windows Mobile user you would see have some application specific icons near to the bottom right corner of the Today screen. It give users ability to directly launch

sirix的专栏 632

常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法

介绍: 74LVC1T45是一个单位双向可控电平转换芯片。   芯片特性: 1、宽供给电压范围:1.65V到5.5V; 2、3.3V时,可输出24mA电流; 3、最大16uA电能损耗; 4、高噪音抑制;   型号:   引脚: VCC(A) 1 A端和DIR电源 GND 2 地 A 3 数据输入/输出 B 4 ...

snmplink的博客 1万+

[罗振辉]MFC中菜单命令路由方式

       昨天在研究window mobile菜单编程的时候遇到了菜单路由方法的问题。其实这个问题在去年就已经遇到过了,而且得到了解决但是一直以来都没有去认真的总结一下。       window消息分三种类型:标准形式(WM_COMMAND)、命令形式(一般与ID_开头)、通告消息形式(一般是事件触发进行、处理方法一般是一个函数)。       菜单命令路由方式是标准的消息处理形式。

Tech is Online(物联网技术传播) 1436

数学建模学习(75):全局敏感性分析Morris 方法

敏感性分析 (SA) 是分析不同应用条件下模型行为的基本实践。提出了许多 SA 技术,从简单的筛选方法到计算成本高昂的基于方差的方法。本篇内容我们通过将 Morris 方法来对模型进行分析。

全栈川川 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于.Net Compact Framework的窗体GUI设计

 整理一些平时工作中用到的winodws mobile界面开发规范及常用方法:1. 菜单的设计   ppc主窗体MaximizeBox = true,显示为"x",其它窗体MaximizeBox=false显示为"ok"; 菜单mainMenu,左菜单不建议有弹出子菜单,为最常用的一个操作,右菜单可设置有弹出子菜单,集合其它操作,菜单级数不要超过3级,合理使用分隔线。2. 程序退出。主

liangzc1314的专栏 561

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Windows Mobile开发快捷菜单问题

今天在开发群里又有人问到ppc上如何长按弹出快捷菜单。与windows不同的是,ppc并不依靠响应WM_RBUTTONDOWN消息来实现,而是在WM_LBUTTONDOWN来处理。说来也不奇怪,ppc上根本就没有右键。以下是正确的代码:......case WM_LBUTTONDOWN:  {   SHRGINFO shrg;   shrg.cbSize = sizeof(shrg);   shr

小李匪盗的专栏 2351

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Windows Mobile 开发总结

转载自:http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html   结合自己4,5月份开发手机视频监控系统经历, 来对那段时间的Windows Mobile开发进行总结一下. 说起Windows Mobile开发这事自己几乎是从零开始起步, 原先主要从事J2EE/Asp.Net下的Web应用开发, 从来没有接触过移动应用开发

qiantuo1234的专栏 977

windows 多级右键菜单(新版菜单IExplorerCommand和旧版菜单IContextMenu)

IContextMenu与IExplorerCommand实现右键多级菜单对比 IContextMenu(传统方式) 通过QueryContextMenu动态构建菜单,使用CreatePopupMenu和InsertMenuItem添加子菜单项。 菜单响应通过InvokeCommand的lpici参数区分命令ID(LOWORD)或谓词字符串(HIWORD)。 示例:筛选.dll文件后生成注册/注销子菜单,执行regsvr32操作。 IExplorerCommand(新版Shell菜单) 原生不支持多级菜单,

风之岷的开发空间 831

如何在系统菜单中添加一个自己的菜单项

<br />优快云地址: http://topic.youkuaiyun.com/u/20080722/18/8517e419-7788-4d1c-9029-7a806f5da46c.html<br />全文:如题,目前我要做的就是在系统菜单中添加一个自己的菜单项(比如是“联系人”这个界面,右下脚的“菜单”),并响应自己要实现的功能。分不够的我可以另外开帖给你加上。谢谢~~~~~对我有用 [0 ]丢个板砖 [0 ]引用举报管理TOP 回复次数:33<br /> ciahi(爪哇乞丐)等 级:#1楼 得分:0

aikker的专栏 1560
上一篇: 短字符.vs. 宽字符
下一篇: (转载)C++中枚举与字符串相互转换
berkshirman
博客等级 码龄19年 41粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值