1

Windows フォームを使用してカスタム ボーダー ウィンドウを作成する必要があります。現在、境界線のサイズを変更するために WM_NCCALSIZE を使用し、カスタム描画のために WM_NCPAINT を使用しています。WM_NCCALSIZE メッセージを処理するときにベース WndProc を呼び出さないと、スクロール バーが描画されないことに気付きました。では、WM_NCCALSIZE を手動で処理すると、ネイティブの通常のスクロール バーを使用できますか? そして、どうすればそれを行うことができますか?

4

1 に答える 1

1

できることは、最初に呼び出しbase.WndProc(ref m)てからメッセージを処理して、境界線のサイズを変更することです。

protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        ...
        case WM_NCCALCSIZE:
        {
            base.WndProc(ref m);
            //Work your magic...
        }
        default: base.WndProc(ref m);
    }
}
于 2013-01-01T17:03:26.663 に答える