当前位置: 首页>>代码示例>>C#>>正文


C# IntPtr.SetWindowPlacement方法代码示例

本文整理汇总了C#中System.IntPtr.SetWindowPlacement方法的典型用法代码示例。如果您正苦于以下问题:C# IntPtr.SetWindowPlacement方法的具体用法?C# IntPtr.SetWindowPlacement怎么用?C# IntPtr.SetWindowPlacement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.IntPtr的用法示例。


在下文中一共展示了IntPtr.SetWindowPlacement方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: PositionButton

    private void PositionButton(IntPtr hWnd, int right, int width)
    {
      hWnd.AssumeNonZero();
      var id = hWnd.GetDlgCtrlID();

      //hWnd.BringWindowToTop();

      var buttonLoc = hWnd.GetWindowPlacement();

      buttonLoc.Right = right;
      buttonLoc.Left = buttonLoc.Right - width;
      hWnd.SetWindowPlacement(ref buttonLoc);
      hWnd.InvalidateRect(IntPtr.Zero, true);

    }
开发者ID:cornelius90,项目名称:InnovatorAdmin,代码行数:15,代码来源:OpenFileOrFolderDialog.cs

示例2: ResizeCustomControl

    private void ResizeCustomControl(IntPtr hWnd, InteropUtil.RECT rect, params IntPtr[] buttons)
    {
      DialogUtil.Assume(buttons != null && buttons.Length > 0);

      hWnd.AssumeNonZero();

      var wndLoc = hWnd.GetWindowPlacement();

      wndLoc.Right = rect.right;
      hWnd.SetWindowPlacement(ref wndLoc);

      foreach (var hBtn in buttons)
      {
        int btnRight, btnWidth;

        m_calcPosMap[hBtn.GetDlgCtrlID()](this, rect.right, out btnRight, out btnWidth);

        PositionButton(hBtn, btnRight, btnWidth);
      }

      //see bug # 844
      //We clip hWnd to only draw in the rectangle around our custom buttons.
      //When we supply a custom dialog template to GetOpenFileName(), it adds 
      //an extra HWND to the open file dialog, and then sticks all the controls 
      //in the dialog //template inside the HWND. It then resizes the control 
      //to stretch from the top of the open file dialog to the bottom of the 
      //window, extending the bottom of the window large enough to include the 
      //additional height of the dialog template. This ends up sticking our custom
      //buttons at the bottom of the window, which is what we want.
      //
      //However, the fact that the parent window extends from the top of the open 
      //file dialog was causing some painting problems on Windows XP SP 3 systems. 
      //Basically, because the window was covering the predefined controls on the 
      //open file dialog, they were not getting painted. This results in a blank 
      //window. I tried setting an extended WS_EX_TRANSPARENT style on the dialog, 
      //but that didn't help.
      //
      //So, to fix the problem I setup a window region for the synthetic HWND. 
      //This clips the drawing of the window to only within the region containing
      //the custom buttons, and thus avoids the problem.
      //
      //I'm not sure why this wasn't an issue on Vista. 
      var hRgn = InteropUtil.CreateRectRgnIndirect(ref rect);
      try
      {
        if (hWnd.SetWindowRgn(hRgn, true) == 0)
        {
          //setting the region failed, so we need to delete the region we created above.
          hRgn.DeleteObject();
        }
      }
      catch
      {

        if (hRgn != IntPtr.Zero)
        {
          hRgn.DeleteObject();
        }
      }
    }
开发者ID:cornelius90,项目名称:InnovatorAdmin,代码行数:60,代码来源:OpenFileOrFolderDialog.cs


注:本文中的System.IntPtr.SetWindowPlacement方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。