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

本文关键字:滚动条 可见性 窗体 边框 Windows 自定义 | 更新日期: 2023-09-27 17:50:24

我必须使用Windows窗体创建一个自定义边框窗口。目前我使用WM_NCCALSIZE来修改边界的大小,WM_NCPAINT用于自定义绘图。我意识到,当我在处理WM_NCCALSIZE消息时不调用基础windowproc时,滚动条将不会被绘制。那么,如果我手动处理WM_NCCALSIZE,我可以有一个本地的,正常的滚动条吗?我该怎么做呢?

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

你可以做的是首先调用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);
    }
}