【问题标题】:Location of a maximized window with custom chrome具有自定义镶边的最大化窗口的位置
【发布时间】:2012-06-23 08:44:20
【问题描述】:

我通过以下方式创建了一个带有自定义镶边的窗口:

  1. 处理WM_NCHITTEST 并为窗口标题和边框返回适当的值,
  2. 吞咽WM_NCPAINT(和WM_NCUAHDRAWCAPTIONWM_NCUAHDRAWFRAME),
  3. 通过暂时删除 WM_VISIBLE 来处理 WM_SETTEXTWM_SETICONWM_NCACTIVATEDefWindowProc
  4. 处理 WM_WINDOWPOSCHANGED 以应用圆角的窗口区域。

Windows 可以很好地处理移动/调整大小。我在窗口样式中添加了WS_THICKFRAME 以启用 Aero Snap 功能。但是现在当窗口最大化时,它位于(-5,-5),并且我的自定义标题栏被切断(如果没有WS_THICKFRAME,这不会发生)。

解决这个问题的正确方法是什么?是什么影响了那个位置?它似乎与 WM_NCHITTEST 返回的值无关。

【问题讨论】:

    标签: windows winapi


    【解决方案1】:

    迟到的答案,但似乎没有其他人回答。

    您可以检查窗口何时最大化并在窗口最大化时考虑边距。您可能想要处理 WM_NCCALCSIZE 而不是 WM_NCPAINT 以使整个窗口显示为客户区,而不是绘制非客户区。

    这描述了一种实现自定义 chrome 的方法(我是作者): http://blogs.msdn.com/b/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2015-07-21
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多