• 3710阅读
  • 4回复

OnMessage不响应一些Windows 消息 [复制链接]

上一主题 下一主题
离线ankkna
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2017-12-04
OnMessage 事件不响应一些Windows 消息,比如:
WM_MOUSELEAVE
离线aplayer

只看该作者 沙发  发表于: 2017-12-05
代码中这些消息都有的:
        MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel);
        MESSAGE_HANDLER(WM_MOUSEHOVER, OnMouseHover);
        MESSAGE_HANDLER(WM_MOUSELEAVE, OnMouseLeave);
查一下是否是代码没有调用 TrackMouseEvent ?
离线ankkna

只看该作者 板凳  发表于: 2017-12-06
回 aplayer 的帖子
aplayer:
代码中这些消息都有的:
        MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel);
        MESSAGE_HANDLER(WM_MOUSEHOVER, OnMouseHover);
        MESSAGE_HANDLER(WM_MOUSELEAVE, OnMouseLeave);
查一下是否是代码没有调用 TrackMouseEvent ?

在APlayerSDK中的SimplePlayer例子里,
文件simpleplayer.cpp 中,插入如下代码:

HRESULT CMyPlayer::OnMessage(LONG nMessage, LONG wParam, LONG lParam)
{
    switch(nMessage)
    {
///////////////////   测试WM_MOUSELEAVE   ///////////////////////////
    case WM_MOUSEMOVE:
        {
            TRACKMOUSEEVENT tme;
            tme.cbSize = sizeof(TRACKMOUSEEVENT);
            tme.dwFlags = TME_HOVER | TME_LEAVE;
            tme.dwHoverTime = HOVER_DEFAULT;
            tme.hwndTrack = m_hAPlayerWnd;

            TrackMouseEvent(&tme);
        }
        break;
    case WM_MOUSELEAVE:
        break;
//////////////////////  测试WM_MOUSELEAVE    //////////////////////////
.....
}
调试中WM_MOUSELEAVE不响应,不知为何?
请指教,谢谢!!!
离线aplayer

只看该作者 地板  发表于: 2017-12-06
m_hAPlayerWnd 不是 APlayer 的视频窗口,而是 APlayer 视频窗口的父窗口(AXWindowClass),你需要这样设置即可成功回调 WM_MOUSELEAVE:

tme.hwndTrack = GetWindow(m_hAPlayerWnd, GW_CHILD);

离线ankkna

只看该作者 4楼 发表于: 2017-12-06
哈哈,的确这样的。
谢谢指教!!!
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个