玩转windows mobile菜单

从零搭建WINCE 6.0开发环境:基于VS2005与设备仿真器的完整指南 嵌入式操作系统是连接硬件与上层应用的关键软件层,它通过内核调度、驱动管理和资源抽象,为嵌入式设备提供稳定可靠的运行环境。其核心价值在于实现硬件资源的统一管理,并支持应用程序的跨平台移植。在工业控制、手持设备和物联网终端等场景中,嵌入式操作系统发挥着基石作用。本文聚焦于Windows Embedded CE 6.0这一经典系统,详细解析如何利用Visual Studio 2005和Platform Builder,从BSP选择、OS Design配置到系统镜像构建的全流程。内容涵盖设备仿真器的使用、组件依赖管 阅读详情

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:新宋体; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@新宋体"; panose-1:2 1 6 9 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:143665776; mso-list-type:hybrid; mso-list-template-ids:-533719436 619879022 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-text:%1>; mso-level-tab-stop:60.0pt; mso-level-number-position:left; margin-left:60.0pt; text-indent:-18.0pt;} @list l1 {mso-list-id:579799790; mso-list-type:hybrid; mso-list-template-ids:-380763910 1403956662 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1 {mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} @list l1:level2 {mso-level-number-format:alpha-lower; mso-level-text:"%2/)"; mso-level-tab-stop:42.0pt; mso-level-number-position:left; margin-left:42.0pt; text-indent:-21.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

1.       WM 的菜单比较特殊,首先要有一个放置菜单的地方,这就是 menu bar ,一个窗口,拥有窗口句柄( HWND ),可以通过 ::ShowWindow(); 来显示和隐藏

a)         系统默认会创建一个空的 menu bar ,如在 dialog 模式下, menu bar 上只显示了一个输入法图标,

// Returns menubar owned by a window

HWND WINAPI SHFindMenuBar(HWND hwnd);

可以获得当前窗口的 menu bar 句柄,这个 menu bar 是系统创建的。值得注意的是,如果需要隐藏这个 menu bar ,最好在窗口初始化的时候 SHFindMenuBar(HWND hwnd); 并保留这个句柄,以备重新 Show 出来,因为如果 menu bar 被隐藏了,再想用 SHFindMenuBar(HWND hwnd); 就不行了,返回的是 NULL 。

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

  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 ; // 显示的菜单资源

  VERIFY(SHCreateMenuBar(&mbi)) ;

如果创建成功, mbi.hwndMB 中记录的就是 menu bar 的句柄,保留使用。因为 SHFindMenuBar(HWND hwnd) 并不能返回这个 menu bar 句柄,具体原因就不知道了。

 

2.       有了 menu bar ,就可以在上面放置菜单了。这里有两种情况:

a)         只有左右键菜单,即 left softkey 和 right softkey 。不包含有子菜单。在这里可以简单地理解将 menu bar 理解 toolbar , left softkey 和 right softkey 相当于 toolbar 上的两个 button 。

1> 使某个 SK(Soft Key) 不可用,但是不能改变它的显示状态。

::SHEnableSoftkey(mbi.hwndMB,0,TRUE,FALSE); // 具体参考 msdn

2> 设置 softkey 文本信息

    TBBUTTONINFO tbbi ;

    memset (&tbbi ,0,sizeof (TBBUTTONINFO ));

    tbbi .cbSize = sizeof (TBBUTTONINFO );

    tbbi .dwMask = TBIF_BYINDEX |TBIF_TEXT /*|TBIF_COMMAND*/ ;

    tbbi .cchText = wcslen (text );  // 文本长度

    tbbi .pszText = text ;            // 文本 

    ::SendMessage (m_hWndMB ,TB_SETBUTTONINFO ,sk ,(LPARAM )&tbbi );

3> 修改 softkey 状态

    TBBUTTONINFO tbbi ;

    memset (&tbbi ,0,sizeof (TBBUTTONINFO ));

    tbbi .cbSize = sizeof (TBBUTTONINFO );

    tbbi .dwMask = TBIF_BYINDEX |TBIF_STATE /*|TBIF_COMMAND*/ ;

    // 获得当前状态

    ::SendMessage (m_hWndMB ,TB_GETBUTTONINFO ,sk ,(LPARAM )&tbbi );

    tbbi .fsState |= stateAdd ;

    tbbi .fsState &= ~stateDel ;

    ::SendMessage (m_hWndMB ,TB_SETBUTTONINFO ,sk ,(LPARAM )&tbbi );

fsState 的值可以是 TBSTATE_ENABLED,TBSTATE_HIDDEN

b)        左右键菜单拥有子菜单。获得左右菜单的菜单句柄(不是 menubar 句柄)

// 方法一

    TBBUTTON tb ;

    memset (&tb ,0,sizeof (TBBUTTON ));

    ::SendMessage (m_hWndMB ,TB_GETBUTTON ,sk ,(LPARAM )&tb ); //sk=0,left sk

    return (HMENU )tb .dwData ; // 菜单句柄。如果没有子菜单,返回0

              // 方法二

    TBBUTTONINFO tbbi ;

    memset (&tbbi ,0,sizeof (TBBUTTONINFO ));

    tbbi .cbSize = sizeof (TBBUTTONINFO );

    tbbi .dwMask = TBIF_LPARAM |TBIF_BYINDEX ;

    ::SendMessage (m_hWndMB ,TB_GETBUTTONINFO ,sk ,(LPARAM )&tbbi ); //sk=0,left sk

    return (HMENU )tbbi .lParam ; // 菜单句柄。如果没有子菜单,返回0

              有了菜单句柄,就可以对子菜单进行操作了。

1>     EnableMenuItem  // MF_ENABLED, MF_DISABLED, or MF_GRAYED

2>     CheckMenuItem  // MF_CHECKED,MF_UNCHECKED

3>     GetMenuItemInfoA  // MFS_CHECKED,MFS_UNCHECKED,MFS_ENABLED,MFS_HILITE,MFS_UNHILITE

4>     SetMenuItemInfoA  // MFS_CHECKED,MFS_UNCHECKED,MFS_ENABLED,MFS_HILITE,MFS_UNHILITE

 

3.       全屏窗口,隐藏输入法图标

// 只对top window 有效,所以m_hWnd 必须是top window 句柄。如果是frame-view-document 模式,
// m_hWnd
应该是frame 的句柄,而不是view 的句柄,在dialog 模式,m_hWnd 是dialog 的句柄

SHFullScreen (m_hWnd , SHFS_HIDESIPBUTTON ));

#define SHFS_SHOWTASKBAR             0x0001

#define SHFS_HIDETASKBAR              0x0002

#define SHFS_SHOWSIPBUTTON           0x0004

#define SHFS_HIDESIPBUTTON           0x0008

#define SHFS_SHOWSTARTICON           0x0010

#define SHFS_HIDESTARTICON           0x0020

 

4.     隐藏ok 按键

BOOL SHDoneButton (HWND hwndRequester , DWORD dwState );

#define SHDB_SHOW                    0x0001

#define SHDB_HIDE                    0x0002

#define SHDB_SHOWCANCEL              0x0004

 

TrollInstallerX:iOS 14-16.6.1免电脑侧载与越狱环境搭建指南 在iOS生态中,应用签名机制是苹果保障系统安全与生态封闭性的核心技术。其原理是通过数字证书验证应用的来源与完整性,确保只有经过App Store审核的应用才能被安装。这一机制虽然提升了安全性,但也限制了用户安装第三方应用的自由。为了突破这一限制,社区开发者利用系统漏洞,实现了对签名验证过程的绕过。TrollInstallerX正是基于CVE-2022-46689等内核漏洞,通过劫持installd进程,在无需电脑和开发者账号的情况下,为iOS 14至16.6.1设备提供了一种永久安装未签名IPA(如越狱商店 阅读详情

相关推荐

混元3D 2.0开源:文生3D与图生3D技术原理与实战指南

文生3D和图生3D是AIGC领域关键的三维内容生成范式,其核心在于将自然语言或单张图像映射为具备几何一致性、物理合理性和可编辑性的三维网格。混元3D 2.0通过语义-几何对齐、隐式场与显式网格双路径协同、单图深度反演等技术创新,显著提升生成模型的结构准确率与工业可用性。相比传统NeRF或多视角重建方案,它降低了硬件门槛与专业技能依赖,支持从提示词直出带UV贴图的OBJ/STL,广泛应用于电商渲染、游戏资产生产、教育可视化及AR交互等场景。本文深入解析其三层架构设计与端到端落地流程,助力开发者快速掌握AI驱动

weixin_33991418的博客 525

Windows Mobile上的菜单

更多wince/wm相关请参考一下论坛 http://www.surfingcenter.cn/forumdisplay.php?fid=9, 也欢迎各位到该论坛提问答疑.1 菜单栏的创建(1) Win32 和 MFC 都适用的创建方式/*加载菜单到窗口, 并返回菜单窗口句柄uiMenuID 菜单资源IDpWnd 需要加载菜单的窗口返回值

2642

Tableau词云实战:从预处理到交互式文本分析

词云是一种基础但关键的文本可视化技术,其核心在于将非结构化文本转化为可量化、可交互的业务洞察。原理上依赖分词、频次统计与视觉编码三步,技术价值体现在敏捷性、可嵌入性与业务方自主性——无需编程即可动态筛选、钻取语境、联动指标。相比静态图片或Python离线图表,Tableau词云真正实现‘活数据’闭环:一个点击即关联原始评论、评分与商品维度。本文聚焦企业级落地,深度融合中文/英文预处理规范、Tableau端四步建模精调及响应式交互设计,覆盖电商评论、用户反馈、问卷开放题等高频场景,尤其适用于需快速响应的运营诊

weixin_33801856的博客 343

windows mobile 菜单处理

Menu的问题在使用win32API进行创建一个菜单的时候,一般按照这样的步骤:1,在资源文件中创建菜单资源2,在窗体中加载资源以上如windows+mobile编程中所提,可是操作完成以后却发现菜单没有被加载进来,寻找原因发现如下:WM的菜单比较特殊,首先菜单本身是一个窗体,拥有句柄(HWND)并且可以通过::showWindow()函数进行显示和隐藏,这就是menu bar;在创建一个新的窗体的时候,系统会默认创建一个空的menubar,例如在你刚刚创建的窗体上也是存在menubar的,只是上面只显示一

PuttyTree的专栏 1224

用AI+Playwright实现零代码UI自动化测试:以登录页面为例的实战指南

本文详细介绍了如何利用AI与Playwright结合实现零代码UI自动化测试,特别以登录页面为例进行实战演示。通过自然语言描述生成测试脚本,大幅降低技术门槛,提升测试效率,并支持跨浏览器验证。适合非技术人员快速上手专业级自动化测试。

weixin_28842269的博客 400

如何编写 Skill 实现自动化用例生成

Skill 本质上是一组结构化的指令和工具定义,它告诉 AI 模型在特定场景下应该遵循什么流程、调用哪些工具、输出什么格式的内容。元信息:名称、描述、版本等。指令(Instructions):定义 AI 的行为准则和任务流程。工具(Tools):AI 可以调用的外部能力,如文件读写、代码执行、API 请求等。上下文(Context):预设的输入输出格式或示例。编写一个用于自动生成测试用例的 Skill,核心在于定义清晰的指令流程和输出规范。

Cesare的博客 2689

关于Windows mobile注册表

  关于Windows mobile注册表                    Eddy1) Windows CE注册表有三个主键:HKEY_CLASSES_ROOT:包含了COM组件的信息和文件扩展名关联信息等,简称HCRHKEY_LOCAL_MACJINE:包含设备的配置信息包括软件与硬件,简称HLMHKEY_CURRENT_USER:包含了用户当前的配置信息,简称HCU

Eddy_0825的专栏 2406

STM32 SAES硬件加密协处理器全模式工程实践指南

AES(高级加密标准)是嵌入式系统中最基础且关键的对称密码算法,其硬件加速实现直接影响安全、性能与功耗平衡。Secure AES Coprocessor(SAES)作为STMicroelectronics在STM32U5等高安全MCU中集成的专用密码协处理器,不仅支持标准ECB/CBC/CTR模式,更原生兼容GCM和CCM等认证加密模式,具备抗侧信道、密钥保护与DMA卸载能力。理解其寄存器状态机(CHMOD/MODE/CPHASE)、NPBLB数据对齐机制及GCM四阶段编程范式,是规避Tag校验失败、IV错

weixin_42311427的博客 76

Windows Mobile程序员玩转Android开发

现在的智能手机操作系统已经进入战国时代,老牌的Symbian、Windows Mobile和BREW面临着iPhone和Android等新势力的巨大挑战。最近有些闲暇时间了,可以研究下新手机操作系统的应用程序开发了。下一代的手机内置功能将不再是决定因素,如何让第三方快速开发手机上的应用将是兵家必争的制高点。 我是一个Windows Mobile程序员,而...

weixin_33713350的博客 206

【车间调度】车间调度问题的分类

本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流。 车间调度问题的分类 根据工件和车间构成不同,车间调度问题可分为以下几种 1.单机调度问题 在单机调度问题(S,SMP)中,加工系统只有一台机床,待加工的工件有且仅有一道工序,所有工件都在该机床上进行加工。此问题是最简单的调度问题,当生产车间出现瓶颈机床时的调度就可视为此调度问题。 ...

weixin_51656605的博客 7429

全网最详细Seurat v5 流程复现(拿来即用)

本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。

ZxVSaccount的博客 1万+

玩转Windows Mobile 5.0 注册表

玩转Windows Mobile 5.0 注册表http://120.132.134.205/cmdn/bbs/viewthread.php?tid=112&extra=page%3D3注意:修改后记得软启动才能生效!5 E. g5 E9 n; f d) i) I5 P  J( E, `0 s4 H) t o* u2 @1、改变标题栏时间显示信息(格式)HKEY_LOCAL_MACHI

足迹 995

Dify 1.1.3部署避坑指南:用wait-for-it.sh解决PostgreSQL初始化失败问题

本文详细解析了Dify 1.1.3部署中遇到的插件数据库初始化失败问题,并提供了使用wait-for-it.sh脚本的实战解决方案。通过剖析Docker Compose服务依赖管理的局限性,指导用户如何改造镜像与配置,确保服务按正确顺序启动,从而有效解决数据库连接失败等部署难题。

wdx012345的博客 1002

玩转Windows Mobile——PC端WM 6.5模拟器安装使用

<br />http://bbs.dospy.com/thread-6967306-1-85-1.html<br /> <br />先把需要的软件准备下,PC端Windows Mobile 6.5、虚拟网卡驱动和ActiveSync.<br />1、Windows Mobile 6.5 - 点此下载<br />建议点击第一个下载,比较全,其他的自己研究。<br />2、虚拟网卡驱动 - 点此下载<br />3、ActiveSync - 点此下载<br />下载后全部安装了,若出现提示错误,就换个盘安装,我全

A Walk in Time & Space 3717

OpenCV实战之人脸美颜美型(八)——大眼(下)

我们需要将上述描述量化表达,以r代表上述变形区域的圆的半径,X表示原始图像像素到变形圆圆心的距离,Y表示像素变形后的其距离变形圆圆心的距离,则其形状大致如下图所示。如下图所示,我们可以规定处理区域为眼睛为圆心的一个圆形,从圆心区域开始图像会放大,但该放大的比例随着距离圆心的距离而变小,直至边缘区域的放大比例为0。不过在实际图像变形操作中我们要从目标图像映射到原图,因此我们需要将X/Y调换,让X表示变形后图像的像素距离变形圆中心的距离,Y表示原图像素距离变形圆中心的距离,则其形状如下图所示。

On my way 901

论文阅读:Query-Dependent Video Representation for Moment Retrieval and Highlight Detection

近年来,随着视频理解需求的急剧增加,视频时刻检索和高亮检测(MR/HD)成为人们关注的焦点。MR/HD的主要目标是对给定的文本进行视频时刻定位和内容一致性估计,即显著性得分。尽管最近基于transformer的模型带来了一些进步,但我们发现这些方法并不能完全利用给定查询的信息。例如,在预测时刻及其显著性时,有时会忽略文本查询与视频内容之间的相关性。为了解决这个问题,我们引入了基于查询的DETR (QD-DETR),这是一种为MR/HD量身定制的检测transfomer。

qq_42681787的博客 918

MATLAB Mobile深度体验:移动端连接、实战技巧与效率提升指南

在工程计算与科学研究的领域,远程访问与移动办公正成为提升工作效率的关键技术。其核心原理在于通过网络协议,将后端强大的计算资源与前端轻量化的交互界面进行解耦与连接,实现算力的灵活调度与访问。这项技术的核心价值在于打破了物理空间对专业工作流的限制,为算法验证、数据监控和即时演示提供了前所未有的敏捷性。典型的应用场景包括实验室设备的远程监控与调试、会议中的即时计算与可视化演示,以及利用碎片时间进行灵感捕捉与快速验证。本文聚焦于MATLAB Mobile这一具体实现,通过深度解析其与MathWorks Cloud或

weixin_33670713的博客 396

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

装机必备 Windows Mobile系统最“牛”软件

装机必备 Windows Mobile系统最“牛”软件 作者:月雯/彭刚 首先谨代表数字家庭版祝福机友们Happy “牛” Year!作为WM6.0到WM7.0之间的过渡版本,WM6.1已成为当下PPC手机主流的操作系统。有读者问到有关WM6.1刷机后安装软件以及优化的问题,笔者今天就给大家推荐一些装机必备的“牛”软件,既可秀出风格,也能使您对WM6.1更加得心应手。机友们快...

技术代码资料库 252

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WM平台玩转Android全攻略

Android系统目前大行其道,flowermix也把玩过一段时间的G2,被Android系统的开放性和丰富的软件所吸引(我是重度测试控╮( ̄▽ ̄")╭ )。 相信大家早就看到过很多关于Windows Mobile设备运行Android系统的报道了,从今年二月份到现在,各种WM设备上运行的Android系统不断被完善,已经可以实现大部分功能。但因为每个机型的Android系统都是由一些爱好者...

weixin_30919571的博客 246

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

智能手机的软件助手

智能手机越来越普及,我们享受其带来便利的同时,却为手机的功能而烦恼,如何才能将我们的短信备份到电脑,让我们的照片直接下载,更新音乐文件等应用呢?实际上微软的Sync同步软件可以让我们通过Mobile操作系统来解决手机和电脑之间的交流。而现在的手机更多的是iPhone和Android的系统,我们很难直接导入数据,试想一下如果有专门的手机软件可以帮助我们更好地用手机的话,那么就解...

weixin_33882452的博客 300

5分钟接管华硕笔记本性能控制:轻量开源工具G-Helper上手全攻略

G-Helper 是一款专为华硕笔记本打造的轻量级性能控制工具,目标非常明确:用体积仅几 MB 的单个可执行文件,接管官方 Armoury Crate(奥创)几乎全部核心能力。它覆盖 ROG 幻系列、天选、枪神魔霸、灵耀、无畏、ProArt 乃至 ROG Ally 掌机,把性能模式切换、显卡切换、风扇与功耗调节、电池保护这些日常刚需,压缩成"双击即用、秒级响应"。这篇文章不打算写成说明书,而是从一

gitblog_00372的博客 366
上一篇: 常用的 预定义宏
下一篇: 【转】各类手机开发平台介绍
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值