双状态按钮,模仿MFC中的复选框

时间:2012-12-19 15:57:46

标签: c++ mfc

我想在MFC工具栏上创建一个按钮,可以按下该按钮并保持其状态,直到再次按下(如复选框),但我不想要一个勾选框。理想情况下,我喜欢在两个图标之间切换的按钮,并使用DDV来更改被按下时的布尔值。我该怎么做呢。

作为一个侧面问题,我可以用一本关于MFC的好书来做。我有MFC第二版编程Windows,但是想知道是否还有更多细节?

3 个答案:

答案 0 :(得分:1)

使用ON_UPDATE_COMMAND_UI设置按钮的状态。例如典型的处理程序将如下所示:

BEGIN_MESSAGE_MAP(CMyView, CView)
    ON_UPDATE_COMMAND_UI(ID_MY_BUTTON, OnUpdateMyButton)
END_MESSAGE_MAP()

...

void CMyView::OnUpdateMyButton(CCmdUI* pCmdUI) 
{
    // TODO: Add your command update UI handler code here

    pCmdUI->SetCheck( isButtonPressed() );
}

关于良好的MFC文档,我推荐专业MFC(Mike Blaszczak) - 它有点老但非常好。

答案 1 :(得分:0)

来自documentation of the CToolBar Class

要创建复选框按钮,请为其指定样式TBBS_CHECKBOX,或在ON_UPDATE_COMMAND_UI处理程序中使用CCmdUI对象的SetCheck成员函数。

答案 2 :(得分:0)

在对话框上绘制一个单选按钮。

选择单选按钮并转到按钮属性页面。

设置“按赞”属性并设置为“真”

为同一控件添加事件处理程序并采用布尔变量。

使用API​​->“ CheckDlgButton(IDC_RADIO1,1);”用于根据布尔变量值设置状态。

了解更多详情。请访问下面的链接。

https://www.codeproject.com/Articles/530/A-Better-Bitmap-Button-Class