在win32中处理鼠标消息

时间:2013-07-18 08:09:58

标签: c++ oop winapi

enter image description here

当用户点击窗口B时,窗口C变为可见。

情境1 :当窗口C可见且用户点击窗口A或B上的任何位置或窗口A的任何其他子窗口时,窗口C变为不可见。

情境2 :当窗口C可见且用户点击窗口C时,程序会执行一些操作并使窗口C不可见。 [窗口C有更多子窗口]

如何实现此功能?

SetCapture不适用于情境2。

在窗口B中,这是我得到的,它适用于情况1,但显然不适用于情境2.

LRESULT WindowB::LButtonDown ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
    if ( !capture )
    {
        ::SetCapture ( hwnd );
        capture = true;
        windowC->show (  );
    }
    else
    {
        ::ReleaseCapture (  );
        capture = false;
        windowC->hide (  );
    }
    return 0;
};

P.S:我正在使用带有oop c ++的纯winapi,以及我自己的windows和消息处理包装器。

编辑:根据要求添加了更多代码。

LRESULT WindowC::lButton ( UINT message, WPARAM wParam, LPARAM lParam )
{


    doStuff (  );

    ::PostMessage (  hParent, WM_COMMAND, WPARAM ( BN_CLICKED ), LPARAM ( hwnd )  );

    return 0;


};

0 个答案:

没有答案