C++/CLI 使无边界表单变得相当大

Jiale Xue - MSFT 46,456 信誉分 Microsoft 供应商
2024-04-02T07:17:30.56+00:00

您好,如何将此c#代码转换为C++ / CLI代码以使我的无边框表单SizeAble?

  this - > SetStyle(ControlStyles::ResizeDraw, true);
  private
  const int cGrip = 16;
  private
  const int cCaption = 32;
  protected override void WndProc(ref Message m)
  {
      if(m.Msg == 0x84)
      {
          Point pos = new Point(m.LParam.ToInt32());
          pos = this.PointToClient(pos);
          if(pos.Y < cCaption)
          {
              m.Result = (IntPtr) 2;
              return;
          }
          if(pos.X\ >= this.ClientSize.Width - cGrip && pos.Y\ >= this.ClientSize.Heigh - cGrip)
          {
              m.Result = (IntPtr) 17;
              return;
          }
      }
      base.WndProc(ref m);
  }

Note:此问题总结整理于: C++/CLI Make Borderless Form Sizeable

C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
147 个问题
.NET 运行时
.NET 运行时
.NET: 基于 .NET 软件框架的 Microsoft 技术。运行时: 运行未编译为机器语言的应用所需的环境。
54 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 48,571 信誉分 Microsoft 供应商
    2024-04-03T07:27:06.2833333+00:00

    尝试将以下代码添加到表单类中:

    #include <Windows.h>
    
    . . .
    
    
    private:
    
        const int cGrip = 16;
        const int cCaption = 32;
    
    protected:
        void WndProc( Message% m ) override
        {
            switch( m.Msg )
            {
            case WM_NCHITTEST:
                Point pos = Point( m.LParam.ToInt32( ) );
                pos = PointToClient( pos );
    
                if( pos.Y < cCaption )
                {
                    m.Result = IntPtr( HTCAPTION );
                    return;
                }
                if( pos.X >= ClientSize.Width - cGrip && pos.Y >= ClientSize.Height - cGrip )
                {
                    m.Result = IntPtr( HTBOTTOMRIGHT );
                    return;
                }
                break;
            }
    
            __super::WndProc( m );
        }
    
    
    

    如果答案有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。