【问题标题】:How to make a custom border without breaking resize and move in wxWidgets?如何在不破坏 wxWidgets 调整大小和移动的情况下制作自定义边框?
【发布时间】:2015-06-21 19:08:26
【问题描述】:

我正在使用 wxWidgets 作为 GUI 库在 C++ 中编写应用程序,并且我想创建自定义窗口。我希望它们看起来像 Visual Studio 或 3ds Max。是否可以删除边框但保留调整大小和移动功能?我可以使用wxBORDER_NONE 并捕获所有事件以删除和调整大小(我希望如此),但我认为应该有更简单的方法来自定义 wxFrame 的外观。也许像一个包含所有需要的位图和设置的文件之类的东西?

具有我需要的这些功能的示例图像:

【问题讨论】:

  • 欢迎来到 Stack Overflow!我编辑了您的问题以添加图像描述(用于屏幕阅读器)。我还尝试让您的问题和标题更直接,因为这使其他用户更容易快速浏览答案问题。祝你好运!

标签: c++ styles frame wxwidgets look-and-feel


【解决方案1】:

您将无法以可移植的方式执行此操作,因此 wxWidgets 不为其提供任何 API。但是您只能以通常的方式为 Windows 执行此操作,即删除正常边框(wxBORDER_NONE 样式)并在覆盖的 MSWWindowProc() 中处理 WM_NCHITTEST 以假装窗口的特定部分表现为标准边框。

【讨论】:

  • 好的,所以现在我正在尝试在我的 wxApp 中创建函数来捕捉所有鼠标移动(无论光标实际在哪里 - 在我的窗口内部或外部),什么也没有。我不知道该怎么做。我尝试了 FilterEvent(wxEvent &event) 但只有当光标在窗口内时,此方法才能捕捉鼠标移动。是否存在任何方法来捕获鼠标移动事件,无论光标在哪里,并在 wxApp 中执行此操作。我只想要一个“全局”事件处理程序来处理调整大小。
  • 这是一个完全不同的问题,可能应该单独提出,但我可以告诉你,当鼠标不在窗口内时获取鼠标事件的唯一方法是捕获它 - 这是并非没有它自己的问题,一般来说你真的不应该这样做。
猜你喜欢
  • 2012-05-14
  • 2010-10-17
  • 2020-05-03
  • 2011-01-10
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多