切换Windows菜单菜单复选框在C 中
Toggle Windows Menu Item Checkbox in C++
我正在尝试切换菜单项旁边的复选框,并更改代码中的布尔以与是否检查了菜单项。
我的switch (message) { ... }
中的case
在我的WndProc
功能中为特定菜单项中有一个。我也有一个布尔变量设置为 TRUE
,默认情况下会检查我的菜单项。
这是我到目前为止尝试的:
HMENU hmenu = GetMenu(hWnd);
LPMENUITEMINFO menuItem;
GetMenuItemInfo(hmenu, ID_OPTIONS_COMPUTERDELAY, FALSE, &menuItem);
if (menuItem->fState == MFS_CHECKED) {
// Checked, uncheck it
menuItem->fState = MFS_UNCHECKED;
SetMenuItemInfo(hmenu, ID_OPTIONS_COMPUTERDELAY, FALSE, &menuItem);
} else {
// Unchecked, check it
menuItem->fState = MFS_CHECKED;
SetMenuItemInfo(hmenu, ID_OPTIONS_COMPUTERDELAY, FALSE, &menuItem);
}
我收到以下错误(将行号更改为上面的匹配代码):
Line 3: argument of type "LPMENUITEMINFO *" is incompatible with parameter of type "LPMENUITEMINFOW"
Line 8: argument of type "LPMENUITEMINFO *" is incompatible with parameter of type "LPCMENUITEMINFOW"
Line 12: argument of type "LPMENUITEMINFO *" is incompatible with parameter of type "LPCMENUITEMINFOW"
Line 4: 'BOOL GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW)': cannot convert argument 4 from 'LPMENUITEMINFO *' to 'LPMENUITEMINFOW'
GetMenuItemInfo()
和 SetMenuItemInfo()
期望指向分配的MENUITEMINFO
实例的指针,但是您将它们传递给了一个指向非初始化的MENUITEMINFO*
指针。这就是为什么您会遇到错误的原因。
您还必须在调用GetMenuItemInfo()
之前设置cbSize
和fMask
字段。
而是尝试一下:
HMENU hmenu = GetMenu(hWnd);
MENUITEMINFO menuItem = {0};
menuItem.cbSize = sizeof(MENUITEMINFO);
menuItem.fMask = MIIM_STATE;
GetMenuItemInfo(hmenu, ID_OPTIONS_COMPUTERDELAY, FALSE, &menuItem);
if (menuItem.fState == MFS_CHECKED) {
// Checked, uncheck it
menuItem.fState = MFS_UNCHECKED;
} else {
// Unchecked, check it
menuItem.fState = MFS_CHECKED;
}
SetMenuItemInfo(hmenu, ID_OPTIONS_COMPUTERDELAY, FALSE, &menuItem);
相关文章:
- 根据变量使Qt UI中的复选框为已选中/未选中
- "动态创建的事件处理程序"复选框
- 有没有办法在取消选中复选框时隐藏按钮?
- 如何删除Qt设计器中自定义插件的QString属性的"translatable"复选框?
- 设置复选框选项C++
- 如何在所有者描述的 MFC CMenu 派生菜单中显示复选框?
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 如何使复选框独占
- AccessObjectFromPoint 返回客户端对象而不是复选框
- Windows 32 API:2个复选框作为一个
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 在 QComboBox 中切换复选框
- 调整QT创建者的复选框
- 如何在C 上创建复选框过滤器
- 如何设置按钮的背景颜色,包括复选框按钮
- 使用 ffh.getFieldType() 检查复选框 == "/Btn" 与 qpdf lib
- 如何在多行文本C++的左上角显示复选框
- Win32如何制作多个复选框并以不同的方式管理它们
- 切换Windows菜单菜单复选框在C 中
- 我可以重置wxWidgets菜单中的复选框状态吗?