本人从CToolBar中派生出一个类CMainToolBar,是用于创建一个新的工具栏,并创建了一个开始按钮,OnBegin()这个函数就是响应这个开始按钮,而本人想把OnBegin()这个消息响应函数放在CMainToolBar中,不想放在CMainFrame中.但是放在CMainToolBar中的话按钮就变灰,不能按下了,放在CMainFrame中就能正常使用.本人移动这个函数的时候ON_BN_CLICKED(IDC_XX,OnBegin)这个也一起放进CMainToolBar中.不知道究竟是什么原因导致这一问题.请问:有什么方法可以实现我想要的功能呢?
解决方案 »
- 关于对话框传递数据的疑问
- 我在win2000下从vc的workspace的classview窗口里消除某个类的函数时为什么在消除该函数的同时,该类也从classview的列表中消失?
- 请问重叠I/O模型的“重叠”如何理解?
- 强烈寻求RS422,RS232通信编程方面的资料,文档,例子,源码均可,谢谢!
- 关于用鼠标如何画矩形?谢谢
- 如何打开一个2000风格的文件打开对话框时, 让其自动初始化为缩略图方式?
- 奇怪的问题(一直在线)
- WH_CBT无法hook到对话框的创建、销毁以及最大化最小化消息
- 请教:怎么改变 button1 按钮的 caption 字的大小和颜色啊?谢谢!
- vc中有直接操作硬件读写的函数??
- vc6.0怎么调用vc.net类库生成的dll?
- 如何让程序早于系统登录界面启动
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra,AFX_CMDHANDLERINFO* pHandlerInfo){ // TODO: Add your specialized code here and/or call the base class return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
改为:
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo){ // TODO: Add your specialized code here and/or call the base class if (m_wndDataStatus.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo)) return TRUE; return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}为什么这么改你可以看下消息的路由,把几个虚函数的调用弄清楚了就知道怎么人改了
还有一个问题就是,我在CMainToolBar中加入OnClose()这个函数,但关闭工具栏时没有响应,这个是否与你所说的有关呢?
afx_msg void OnClose();ON_WM_CLOSE()void CMainToolBar::OnClose()
{
SendStopData(); CToolBar::OnClose();
}