- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Visual Studio 2013 制作了一个简单的拆分窗口应用程序。有两个 View ,一个 View 由默认 View 类组成,另一个 View 由派生自 的自定义 View 类组成CScrollView
。
/////////////////////////
// MainFrm.cpp
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
split_wnd.CreateStatic(this,1,2);
CRect cr;
GetClientRect(&cr);
split_wnd.CreateView(0,0,RUNTIME_CLASS(CProjectMainView),CSize(cr.Width()/2,cr.Height()),pContext);
split_wnd.CreateView(0,1,RUNTIME_CLASS(CMyCustomView),CSize(cr.Width()/2,cr.Height()),pContext);
return true;
}
这个分离器工作正常。
当我尝试将 ON_COMMAND
处理程序添加到菜单项之一时,出现问题。如果我将 ON_COMMAND
处理程序放入默认 View 类中,则没有问题。菜单项点击效果良好并且处理程序工作正常。
但是,如果我将 ON_COMMAND
处理程序放入自定义 View 类中,则菜单项根本不会启用。
我相信我已经尽一切努力在我的自定义 View 类中正确实现消息映射。
/////////////////////////
// CMyCustomView.h
class CMyCustomView:public CScrollView
{
public:
DECLARE_DYNCREATE(CMyCustomView)
CMyCustomView();
~CMyCustomView();
virtual void OnDraw(CDC* /*pDC*/);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void OnInitialUpdate();
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnMenuIdTestMessageMap();
};
DECLARE_MESSAGE_MAP()
肯定存在于 MyCustomView.h 中当然,我在 MyCustomView.cpp 文件中添加了 BEGIN_MESSAGE_MAP
、END_MESSAGE_MAP()
对。
/////////////////////////
// CMyCustomView.cpp
BEGIN_MESSAGE_MAP(CMyCustomView,CScrollView)
ON_COMMAND(MENU_ID_TEST_MESSAGE_MAP,&CMyCustomView::OnMenuIdTestMessageMap)
END_MESSAGE_MAP()
void CMyCaptureView::OnMenuIdTestMessageMap()
{
// TODO: Add your command handler code here
}
但是,菜单项根本不会启用。它只是保持灰色。
我已经尽可能地用谷歌搜索,但到目前为止似乎还没人有过这种经历。首先是否不可能将 ON_COMMAND
处理程序添加到自定义 View 类?我希望不会。
请给我一些建议。谢谢。
最佳答案
原因很简单。命令路由遵循以下规则:
没有路由到拆分窗口中的不同 View 。
如果您想要不同的行为,请在托管拆分器窗口的框架中创建一个 OnCmdMsg 处理程序。首先调用 OnCmdMsg 到事件拆分器 View ,然后(如果未处理)将其重新路由到第二个嵌入 View 。
参见TN021
关于events - 即使添加 ON_COMMAND 处理程序后,菜单项仍保持禁用状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935777/
我使用 Visual Studio 2013 制作了一个简单的拆分窗口应用程序。有两个 View ,一个 View 由默认 View 类组成,另一个 View 由派生自 的自定义 View 类组成CS
我有一个函数,它根据接收到的 std::string 值执行特定的操作。 例如: void performTaskOnStringValue(std::string); 现在我有一组功能区按钮 (CM
我做 MFC 作业。但它会出错。 BEGIN_MESSAGE_MAP(CMFC_Exp01Doc, CDocument) ON_COMMAND(ID_ARTHMETIC, &CMFC_Exp01Doc
好的,这就是这个函数 ..ON_COMMAND (ID_COLOR_RED, OnColor)ON_COMMAND (ID_COLOR_GREEN, OnColor) ON_COMMAND (ID_
我是一名优秀的程序员,十分优秀!