学习OC2007 [三] 定制菜单命令?

本文详细介绍了如何在OC2007中通过注册表配置自定义菜单项,包括菜单项的创建、属性设置以及如何在不同窗口中显示。文章提供了具体的代码示例和注册键说明,帮助开发者实现个性化的用户界面。

OC2007中,有三种类型的菜单:

  工具栏菜单(The Tools menu)

  会话窗口的动作菜单(The Actions menu off the Conversation window)

  联系人窗口右键菜单(The right-click menu off the Contact List)

在这些菜单列表中,都可以扩充我们的自定义菜单项。
  在OC2007 中,扩展菜单项,比扩展web 标签页,要容易一些,只要在注册表中定义清楚菜单项的各项属性就可以正常运行。如下代码所示:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Communicator/SessionManager/Apps/{27877e66-615c-4582-ab88-0cb2ca05d951}]
"Name"="发送短信"
"ExtensibleMenu"="ConversationWindowRightClick;MainWindowActions;MainWindowRightClick;ConversationWindowActions;ConversationWindowContextual"
"Path"="E://群发邮件//SendNote//SendNote.exe %user-id% %contact-id%"
"ApplicationInstallPath"="E://群发邮件//SendNote//SendNote.exe"
"SessionType"=dword:00000000
"ApplicationType"=dword:00000000


各注册键说明如下:

Name

Type

Data

Name

REG_SZ

菜单命令名称

ApplicationType

DWORD

应用程序类型:0:可执行文件;1:协议

ApplicationInstallPath

REG_SZ

ApplicationType = 0 时,应用程序的完整路径

Path

REG_SZ

应用程序的完整路径及其参数,缺省参数 %user-id% 和%contact-id%.

SessionType

DWORD

会话类型。
0:本地会话,应用程序只在本地启动。
1:双方会话(缺省)
2:多方会话

ExtensibleMenu

REG_SZ

应用程序将会在哪些菜单上显示:
  MainWindowActions
  MainWindowRightClick
  ConversationWindowActions
  ConversationWindowContextual
  ConversationWindowRightClick


缺省MainWindowRightClickConversationWindowContextual 

多个菜单项目之间用分号(“;”)分隔。

 

菜单说明

键名称(Key) 说明
MainWindowActions主窗口菜单的[工具]工菜单下
MainWindowRightClickOC主窗口联系人[右键]菜单
ConversationWindowActions对话窗口菜单的[操作]菜单下
ConversationWindowContextual对话窗口的[发送文件]菜单
ConversationWindowRightClick对话窗口,联系人列表[右键]菜单

定义完成后,重启OC,就可以达到如图所示的效果了。

TIM_OC_InitTypeDef 是 STM32 微控制器中用于配置定时器输出比较(Output Compare, OC)功能的结构体类型。该结构体定义了一系列成员变量,用于设置与输出比较相关的参数,包括输出模式、比较值、极性、快速模式等[^4]。 具体定义如下: ```c typedef struct { uint32_t OCMode; /*!< 输出比较模式选择 */ uint32_t Pulse; /*!< 设置比较值 */ uint32_t OCPolarity; /*!< 设置输出比较极性 */ uint32_t OCNPolarity; /*!< 设置互补输出比较极性 */ uint32_t OCFastMode; /*!< 使能或失能输出比较快速模式 */ uint32_t OCIdleState; /*!< 空闲状态下OC1输出 */ uint32_t OCNIdleState; /*!< 空闲状态下OC1N输出 */ } TIM_OC_InitTypeDef; ``` ### 主要用途 TIM_OC_InitTypeDef 结构体的主要用途是为定时器通道提供详细的配置信息,使其能够执行特定的输出比较操作。这种操作常用于生成 PWM 波形、控制电机速度、调节 LED 亮度等应用场景。 - **OCMode**:指定输出比较模式,例如可以选择 `TIM_OCMODE_PWM1` 或 `TIM_OCMODE_PWM2` 来配置 PWM 模式。 - **Pulse**:设置比较值,决定在计数器达到哪个数值时触发输出变化。 - **OCPolarity**:定义输出信号的极性,例如可以选择高电平有效 (`TIM_OCPOLARITY_HIGH`) 或低电平有效 (`TIM_OCPOLARITY_LOW`) [^3]。 - **OCFastMode**:启用或禁用输出比较快速模式,快速模式允许更快的响应时间,但可能增加功耗。 - **OCNPolarity**、**OCIdleState** 和 **OCNIdleState**:这些成员通常用于高级定时器中的互补输出和空闲状态管理。 使用此结构体时,可以调用 `TIM_OCStructInit()` 函数将结构体成员初始化为默认值,然后根据需要进行修改,以确保配置的完整性与正确性[^2]。 ### 示例代码 以下是一个基于 HAL 库的示例,展示如何使用 TIM_OC_InitTypeDef 配置 PWM 通道: ```c TIM_OC_InitTypeDef sConfigOC; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } ``` 上述代码展示了如何配置一个基本的 PWM 通道,其中包含模式选择、脉冲宽度设定以及输出极性的设置[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值