【问题标题】:Detect mouse click in mfc/ole在 mfc/ole 中检测鼠标点击
【发布时间】:2013-12-08 20:30:00
【问题描述】:

我正在尝试在现有软件中使用 mfc 实现鼠标单击。客户端是通过 OLE 自动化连接到服务器的 mfc 应用程序。客户端显示通过 OLE 连接的服务器的输出。我用wizared实现了客户端对鼠标点击的检测:

    void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
    {
        CDC* pDC1 = GetDC();
        pDC1->SelectStockObject(WHITE_BRUSH);
        pDC1->Ellipse(0,0,20,20);
    }

我期待当我点击时,会出现一个小圆圈。但它不起作用,我只能看到服务器的输出!当我在一个简单的独立项目中实现它时,它可以工作。 感谢您帮助解决这个问题。 谢谢! L.

【问题讨论】:

  • 请澄清“客户端显示服务器的输出”是什么意思
  • 有一个记录和显示视频的服务器。客户端可以通过 OLE 自动化获取该视频并进行显示。这已经完成了,现在在客户端我希望能够鼠标点击视频并且客户端能够检测到。由于某种原因,上面的代码不适用于我的应用程序,但可以在没有 OLE 自动化的项目中使用。谢谢。 L.

标签: c++ visual-c++ mfc ole


【解决方案1】:

如果视频直接在 CChildView 上绘制,那么它将很快覆盖并擦除圆圈。如果视频是由 CChildView 上的某种子控件绘制的,则鼠标单击消息会发送到该控件,而不是 CChildView。

【讨论】:

  • 是的,视频直接绘制在 CChildView (CChildView::OnPaint() ) 上。我不认为绘画擦除了圆圈:未检测到单击,从未调用函数 CChildView::OnLButtonDown ,我在调试模式下检查了断点。谢谢。 L.
  • 检查以确保消息映射包含 ON_WM_LBUTTONDOWN()
猜你喜欢
  • 2010-10-05
  • 2020-04-18
  • 2021-09-06
  • 2015-08-03
相关资源
最近更新 更多