1

by制御にバグはありますか?または私は何か間違っていますか?


CMFCToolBar m_wndToolBar;
メッセージ マップの.h
ON_COMMAND(ID_MYID, &CMainFrame::OnToolBar)

void CMainFrame::OnToolBar()
{
int nIndex = m_wndToolBar.CommandToIndex(ID_MYID);
UINT nState = m_wndToolBar.GetButtonStyle(nIndex);
if(nState & TBBS_PRESSED)
nState &= ~TBBS_PRESSED;
else
nState |= TBBS_PRESSED;
m_wndToolBar.SetButtonStyle(nIndex,nState);
m_wndToolBar.InvalidateButton(nIndex);
}

ボタンをクリックすると、ボタンが押された状態に設定する必要があり、ユーザーがもう一度クリックすると、ボタンが押されなくなります。

ボタンをクリックしても何も起こりません:(

4

2 に答える 2

1

特定のアイテムの ON_UPDATE_COMMAND ハンドラーを作成するだけです。pCmdUI->SetCheck を使用して、ダウン状態またはアップ状態を通知します。

MFC がツールバーとメニューを直接更新することはありません。これらは、ボタンとメニュー項目の状態を更新するようにフレームワークに要求します。

于 2013-10-15T09:57:55.067 に答える
0

あなたの説明は、ボタンに「チェックボックス」の動作をさせたいことを示しています。それが正しい場合は、ボタン スタイルにTBBS_CHECKBOXを指定していることを確認してください。ボタンが押されるたびに、チェック ボックスの状態のレンダリングを手動で処理する必要はありません。

于 2013-10-15T12:58:44.843 に答える