C# 定义窗体客户端区域的大小和位置

C# 定义窗体客户端区域的大小和位置,c#,forms,winforms,C#,Forms,Winforms,我必须定义表单客户端区域的大小和位置 我已经查看并使用了下面的代码来定义表单的客户端区域 private void On_Wm_NcCalcSize(ref Message m) { NativePaint.RECT rect = new NativePaint.RECT(); NativePaint.GetWindowRect((int)this.Handle, ref rect); rect.top += CaptionHeight

我必须定义表单客户端区域的大小和位置

我已经查看并使用了下面的代码来定义表单的客户端区域

 private void On_Wm_NcCalcSize(ref Message m)
    {
        NativePaint.RECT rect = new NativePaint.RECT();
        NativePaint.GetWindowRect((int)this.Handle, ref rect);

        rect.top += CaptionHeight;
        rect.left += borderWidth;
        rect.right -= borderWidth;
        rect.bottom -= borderWidth;

        Marshal.StructureToPtr(rect, m.LParam, true);
    }
它工作得很好。但是我无法理解方法调用的目的Marshal.StructureToPtr(rect,m.Lparam,true)

我对此进行了分析。 但我无法理解在这种情况下使用该方法的原因

这是定制客户端区域的唯一方法吗


任何人都可以分享你的知识

听起来像是个x-y问题。你觉得你为什么要这么做?这就是我不知道的。有没有可能不用这个来定义客户区?我的意思是:为什么你想“改变客户区”另外:这是否意味着你想让它与整个窗口区域减去边框和标题不同?我必须增加标题栏的大小。为此我需要这个。这很难!相反,我建议完全删除标题栏,并模拟你们自己的标题栏。-有关解决此问题的示例,请参见!(这似乎是关于透明度的,但顶部标签充当标题栏!!)