1

我必须使用 Windows 窗体创建自定义边框窗口。目前我正在使用 WM_NCCALSIZE 修改边框的大小,并使用 WM_NCPAINT 进行自定义绘图。我意识到,当我在处理 WM_NCCALSIZE 消息时不调用 base 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 回答