you put the event handler in CMainFrame. What I did is I add the event handler in CPaneDialog, which is a sub window of the CMainFrame, how about try the following steps?
1. Drag a button on the IDD_DLG_BAR
2. Double click the button and VS will prompt to create a class for that dialog, choose CDialog because VS class wizard don't allow to derive from CPaneDialog directly.
3. After the new class was created, change the CDialog to CPaneDialog4. Add a event handler for the button in the new class
The button is still disabled
5.if add an ON_UPDATE_COMMAND_UI handler for the button, it is enabled.
其中第五步的代码:
afx_msg void OnUpdateMyControl(CCmdUI* pCmdUI);
BEGIN_MESSAGE_MAP(CDockBotton, CDockablePane)
:
ON_UPDATE_COMMAND_UI(IDC_BUTTON_SCANPure, OnUpdateMyControl)
:
END_MESSAGE_MAP()
void CDockBotton::OnUpdateMyControl(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TRUE);
}