MFC怎么实现按钮保持在被选中状态?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC怎么实现按钮保持在被选中状态?相关的知识,希望对你有一定的参考价值。

我想做一个图片上这样的界面,按下导航按钮打开对应的子界面。
遇到的问题是在子界面操作时上面的导航按钮就失去焦点变成普通状态了。
怎么才能做成图片这样按下“立即修复”后“漏洞修复”还是保持在选中状态?
这是我的自绘按钮关于焦点的代码,怎么处理能让导航的几个按钮一定有一个是用m_bFocus图片的
CBitmap m_bNormal,m_bDown,m_bDisabled,m_bMask,m_bOver,m_bFocus;

if ((lpDrawItemStruct->itemState & ODS_FOCUS)&&(m_bFocus.m_hObject!=NULL))
DrawBitmap(pDC,(HBITMAP)m_bFocus,r,m_DrawMode);
else
DrawBitmap(pDC,(HBITMAP)m_bNormal,r,m_DrawMode);

给你说说原理:按下漏洞修复后,原来的那个图片就被替换成了现在的图片,所以你按下立即修复后,其实那个漏洞修复并没有焦点,焦点在立即修复上,但是你看到就好像漏洞修复也有焦点,这就是图片的原因。
你要实现这种效果,就做两个图片,操作时进行替换就可以了
参考技术A 试试添加update事件,增加一个变量用于控制导航上面选中的是哪个按钮,类型代码如下:
void CMainFrame::OnUpdateSelect(CCmdUI *pCmdUI)

// TODO: 在此添加命令更新用户界面处理程序代码
if (m_CurViewStyle == DISTINGVIEW || m_CurViewStyle == IMAGEWALLVIEW)

pCmdUI->Enable(FALSE);

else

if (1 == theApp.getCurView()->getBtnState())

pCmdUI->SetCheck(TRUE);

else

pCmdUI->SetCheck(FALSE);


参考技术B 360那个不是默认的按钮,而是自绘的一个控件(应该是directx ui做的)。你可以通过自绘按钮来实现,或者简单点,直接用选项卡代替按钮就行了。 参考技术C 人家那是图面兄弟追问

按钮上面的图片我添加好了,求这几个按钮特殊处理的方法。

追答

那个只是图片 你鼠标移到那个区域的时候 那个区域就换图片 明白?

以上是关于MFC怎么实现按钮保持在被选中状态?的主要内容,如果未能解决你的问题,请参考以下文章

MFC的单选按钮、复选框问题

MFC如何给单选框或复选框初始化时就被选中

提交表单后保持单选按钮处于选中状态

mfc如何设置取消按钮的默认选中以及单击后的默认选中?

请问mfc如何画出能被选中的直线

在播放音频时保持 UIButton 处于选中状态