关于VC菜单项的勾选标记

大哥们,我在用MFC写东西,要对一个菜单项做如此动作:点击一下旁边有个勾,再点击一下没有了,请问怎么做!?谢谢。DWORDCheckMenuItem(HMENUhmenu... 大哥们,我在用MFC写东西,要对一个菜单项做如此动作:
点击一下旁边有个勾,再点击一下没有了,请问怎么做!?
谢谢。
DWORD CheckMenuItem(
HMENU hmenu, // handle to menu
UINT uIDCheckItem, // menu item to check or uncheck
UINT uCheck // menu item options
);
展开
 我来答
conny的知识小店
2009-10-05 · TA获得超过1952个赞
知道小有建树答主
回答量:549
采纳率:100%
帮助的人:434万
展开全部
给你的菜单项添加UPDATE_COMMAND_UI响应。方法是:在CMainFrame,右键,选择Message Handler,关联你的菜单项ID,就可以添加UPDATE_COMMAND_UI响应了,然后Eidt Existing,添加代码如下:
pCmdUI->SetCheck(1);
根据你的实际情况不同,还需要flag标志控制,反复勾选的动作。你也可以尝试CheckMenuItem函数。
根据你的补充,我给你提供一个思路,你可以看这行代码:
pCmdUI->m_pMenu->CheckMenuItem(ID_ITEM1, MF_CHECKED);
当然,这个思路还需要你根据实际情况去扩充和完善。
Tian·Ccb12
2009-10-01 · TA获得超过389个赞
知道小有建树答主
回答量:535
采纳率:0%
帮助的人:575万
展开全部
在你要设置勾的那个菜单项中响应ON_UPDATE_COMMAND_UI和COMMAND消息。
在ON_UPDATE_COMMAND_UI响应函数里加上
pCmdUI->SetCheck(state);
COMMAND响应函数加上
state = !state;
就可以
----------------mainfrm.h----
.
.
public:
afx_msg void OnUpdateXXX(CCmdUI *pCmdUI);
afx_msg void OnXXX();
static BOOL state = TRUE; //勾的初始状态 TRUE为选上
.
.
-----------------------------mainfrm.cpp--
.
.
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_UPDATE_COMMAND_UI(ID_XXX, &CMainFrame::OnUpdateXXX)
ON_COMMAND(ID_XXX, &CMainFrame::OnXXX)
END_MESSAGE_MAP()
.
.
.
void CMainFrame::OnUpdateXXX(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(state);

}
void CMainFrame::OnXXX()
{
state = !state;
}
.
.
.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanchangyong08
2009-10-04 · TA获得超过660个赞
知道小有建树答主
回答量:1096
采纳率:0%
帮助的人:0
展开全部
你可以在处理这个菜单项的Command事件中,先用GetMenuState,得到菜单项现在的状态,然后用CheckMenuItem这个函数,设定它的选定状态.
至于这两个函数具体的用法,我想你可以查一下MSDN.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北风微风
2009-10-01 · TA获得超过1094个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:0
展开全部
void CYourDlg::OnMenuItemName()
{
// TODO: Add your command handler code here

UINT flag = ::GetMenuState(::GetMenu(m_hWnd), ID_MENU_NAME, MF_BYCOMMAND);

if (!(flag&MF_CHECKED))
::CheckMenuItem(::GetMenu(m_hWnd), ID_MENU_NAME MF_CHECKED);
else
::CheckMenuItem(::GetMenu(m_hWnd), ID_MENU_NAME, MF_UNCHECKED);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7b212dbd
推荐于2016-03-11 · TA获得超过198个赞
知道答主
回答量:121
采纳率:100%
帮助的人:43.6万
展开全部
void CDDDView::OnLine()
{
// TODO: Add your command handler code here
if(m_line)
((CMainFrame *)GetParent())->GetMenu()->GetSubMenu(3)->CheckMenuItem(ID_LINE,MF_BYCOMMAND | MF_UNCHECKED);
else
((CMainFrame *)GetParent())->GetMenu()->GetSubMenu(3)->CheckMenuItem(ID_LINE,MF_BYCOMMAND | MF_CHECKED);
m_line=!m_line;
Invalidate();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式