自定义边框Windows窗体和滚动条可见性

时间:2013-01-01 16:36:46

标签: c# winforms

我必须使用Windows窗体创建自定义边框窗口。目前我使用WM_NCCALSIZE来修改边框的大小,并使用WM_NCPAINT进行自定义绘图。 我意识到当我在处理WM_NCCALSIZE消息时不调用基本WndProc时,滚动条将不会被绘制。 那么,如果我手动处理WM_NCCALSIZE,我可以使用原生的普通滚动条吗?我怎么能这样做?

1 个答案:

答案 0 :(得分: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);
    }
}