WindowsMobile新手编程笔记(1) - 如何创建Softkey Menu

参考文章:

http://msdn.microsoft.com/en-us/library/bb416670.aspx

http://hi.baidu.com/donghaozheng/blog/item/2165c3112f5c8d17b8127bc7.html

http://blog.csdn.net/tellmenow/archive/2006/08/06/1026197.aspx

 

开发环境:

Visual C++ 2008 SP1

SmartPhone 2003 QVGA

 

 

序:

对现有的两个游戏机模拟器的WindowsMobile版不满意,在我的横屏手机上玩有很多问题,开始学习WindowsMobile开发,希望能早日改进这两个模拟器。

 

 

最终成果图片:

最终效果图

 

 

正文:

 

WindowsMobile的Win32 API方式开发和桌面Windows下差不多,根据VS的工程向导新建Win32智能设备工程后,选了SmartPhone 2003平台,向导自己生成了相关代码,和一个直接使用Win32 API构建的桌面程序框架几乎相同。

但是在CommandBar菜单创建方面是新内容。

 

工程里多了后缀为rc2的资源,该资源不能由VC的资源编辑器可视化编辑,因此该资源被独立出来方便手工编辑,按查看代码方式打开后里面是IDR_MENU的描述

以上代码中的菜单项描述,一般程序中必须要关注的有以下几项:

第2个参数(此处为IDM_OK):如果希望在CommandBar上的是一个按钮,那么这个参数指定的就是该按钮在WM_COMMAND消息触发时的wmId编号

第4个参数:指定了该菜单项的Style,如果希望在CommandBar上的是一个按钮,那么就要用TBSTYLE_BUTTON,如果希望是一个子菜单,那就要用TBSTYLE_DROPDOWN,当然还有些其他类型的。

第5个参数(此处为IDS_OK):该项的字符串资源名,用于显示,比如这里IDS_OK默认就是"确定",该程序编译运行后,左下角的按钮就显示"确定"

第7个参数(此处为NOMENU):对于TBSTYLE_BUTTON的菜单项,这里一般就设成NOMENU了,而对于需要构造子菜单的程序,这里就要填上一个编号,指明插入的子菜单是受引用的外部菜单的第几项POPUP菜单。

 

比如我现在不满意这样简单的菜单结构,我希望CommandBar上有左软键和右软键各自对应的一个按钮,并且左软键对应的是一个直接的按钮,而右软键对应的是一个菜单。那么改写步骤如下:

添加子菜单资源

在工程树中双击后缀名为rc的标准资源,打开了资源树,在其中添加一组Menu资源,加入两个总菜单,File和Edit,在File菜单下再放上3个项目Test、分割线、Exit,在Edit菜单下放上1个项目Copy。保存资源。这样该Menu自动命名为IDR_MENU1,这个ID定义名可以根据需要修改。

用查看代码方式打开.rc文件发觉其中多了如下内容:

然后改写.rc2的代码,将其修改成如下内容:

 

这样改动后编译运行,就可以看到左软键依然对应一个按钮,而右软键对应的不再是空控件了,而是一个名为"右键"的菜单,按下右软键弹出的菜单里就包含Test、分割线、Exit三项。

如果修改rc2中第二个菜单描述项的最后一个参数为1,那么右键菜单中弹出的就是包含Copy的菜单了。

 

最终成果图片:

最终效果图 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值