1

ここに画像の説明を入力

ユーザーがウィンドウ 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;
};

PS : 私は oop c++​​ で純粋な winapi を使用しており、ウィンドウとメッセージ処理用に独自のラッパーを使用しています。

編集: 要求に応じてさらにコードが追加されました。

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


    doStuff (  );

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

    return 0;


};
4

0 に答える 0