关于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
); 展开
点击一下旁边有个勾,再点击一下没有了,请问怎么做!?
谢谢。
DWORD CheckMenuItem(
HMENU hmenu, // handle to menu
UINT uIDCheckItem, // menu item to check or uncheck
UINT uCheck // menu item options
); 展开
6个回答
展开全部
给你的菜单项添加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);
当然,这个思路还需要你根据实际情况去扩充和完善。
pCmdUI->SetCheck(1);
根据你的实际情况不同,还需要flag标志控制,反复勾选的动作。你也可以尝试CheckMenuItem函数。
根据你的补充,我给你提供一个思路,你可以看这行代码:
pCmdUI->m_pMenu->CheckMenuItem(ID_ITEM1, MF_CHECKED);
当然,这个思路还需要你根据实际情况去扩充和完善。
展开全部
在你要设置勾的那个菜单项中响应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;
}
.
.
.
在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;
}
.
.
.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在处理这个菜单项的Command事件中,先用GetMenuState,得到菜单项现在的状态,然后用CheckMenuItem这个函数,设定它的选定状态.
至于这两个函数具体的用法,我想你可以查一下MSDN.
至于这两个函数具体的用法,我想你可以查一下MSDN.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
{
// 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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
{
// 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();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询