EVC中 菜单的打勾选项问题

FloraCheng 2004-10-27 11:36:20
在代码中,我用
state = submenu->GetMenuState( ID_OPERATION_CONNECTTOSERVER, MF_BYCOMMAND );
来读出菜单当前的状态,但很妖怪的是
无论初始时刻我在资源中设置为“Checked”状态还是“UnChecked”状态
我得到的State 都为0


不知道是什么原因,请教大家
谢谢
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
FloraCheng 2004-10-28
  • 打赏
  • 举报
回复
纠正一下:

上面代码 if ... else ...语句中的m_pMenuBar 都应该改成pSubmenu

但奇怪的是 if ... else ... 语句之前的GetMenuState函数执行结果得到的State,不管当前为什么状态,值都为“0”

所以请教了 谢谢!
FloraCheng 2004-10-28
  • 打赏
  • 举报
回复
void CLocateAssistantDlg::OnOperationConnecttoserver()
{
// 判断菜单选项的状态
UINT state;
CMenu* pSubmenu = m_pMenuBar->GetSubMenu(0);

state = pSubmenu ->GetMenuState( ID_OPERATION_CONNECTTOSERVER, MF_BYCOMMAND );

ASSERT( state != 0xFFFFFFFF ) ;


if( state & MF_CHECKED )
{
// 若当前是CHECKED状态,则置为UNCHECKED状态
m_pMenuBar->CheckMenuItem(ID_OPERATION_CONNECTTOSERVER, MF_UNCHECKED | MF_BYCOMMAND );


}
else
{
// 若当前是UNCHECKED状态,则置为CHECKED状态
m_pMenuBar->CheckMenuItem(ID_OPERATION_CONNECTTOSERVER, MF_CHECKED | MF_BYCOMMAND );


}

}


上面的代码是菜单命令的响应函数,无论我在菜单资源中设置“Checked”或者“Unchecked”,程序运行后,直接点击此菜单项,发现得到的State都为“0”,所以感觉有点怪

请教了 谢谢!
载舟之水 2004-10-28
  • 打赏
  • 举报
回复
要看到具体的代码才能确定
FloraCheng 2004-10-28
  • 打赏
  • 举报
回复
放在菜单命令的响应函数中阿

我的想法是,响应菜单命令时,判断当前菜单项的状态,若为Unchecked 则设为 Checked,若为Checked 则设为Unchecked ,这样做有什么问题么?

谢谢
无聊客 2004-10-28
  • 打赏
  • 举报
回复
MENUITEMINFO info;
memset(&info, 0, sizeof(info));
info.cbSize = sizeof(info);
info.fMask = MIIM_STATE;
pSubmenu->GetMenuItemInfo(ID_OPERATION_CONNECTTOSERVER, &info);

if( info.fState & MF_CHECKED )
{
...
}
载舟之水 2004-10-27
  • 打赏
  • 举报
回复
那要看你这句话放在程序的什么地方了。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧