【问题标题】:Win32 C++ resize controls [duplicate]Win32 C ++调整大小控件[重复]
【发布时间】:2019-07-25 08:42:24
【问题描述】:

使用 Win32 而不是 MFC,我将如何创建可调整大小或拆分控件?

例如,一个具有两个并排编辑控件的窗口,可以使用公共分隔线调整它们的大小。以同样的方式可以调整此对话框的大小。

不一定在一个完整的例子之后只是一个正确的方向。我查找的所有内容都是关于调整整个窗口的大小,而不是父窗口内的单个控件(窗口)。

编辑

添加的图片是我的示例。

【问题讨论】:

  • 您需要编写一个适当的窗口过程来处理 WM_SIZE / WM_MOVE 和相关消息。通常每个控件都有一个对应的窗口(HWND 或逻辑)
  • 我对每个窗口都有单独的 win procs,我只是不确定如何检测单击、拖动并将其与两个编辑控件的大小调整相关联。
  • 如果为每个编辑控件关联窗口处理,则可以像操作主窗口一样操作编辑控件。
  • 可以通过处理鼠标移动和按钮消息来检测点击和拖动。
  • Windows 不为您提供这种控制。你需要自己写。

标签: c++ winapi editcontrol


【解决方案1】:

我查找的所有内容都是关于调整窗口大小而不是控件。

嗯,突然间,控件实际上也是一个窗口,只是在视觉上有点不同。

调整控件大小与调整窗口大小相同。在 Win API 中,它由SetWindowPos 函数处理。

要在调整窗口大小时正确调整控件的大小,您必须在主窗口中处理WM_SIZE Windows 消息,然后相应地调整/移动控件的大小。

更新:

查看您的图片后:
基本上,如果我理解你的意图,你需要一些自定义分隔线/控件,拖动最终会调整/移动相应的编辑控件。对吧?

就纯 Win API 而言,您必须以...另一个窗口的形式实现此类控件/分隔器。
在此窗口中,您必须处理鼠标点击/移动,然后使用(以某种方式)链接的编辑控件执行任何您想要的操作(基本上实现所有逻辑)。

坦率地说,这不是一项非常简单的任务,这就是框架的用途(MFC 等......)。

【讨论】:

  • 这是总是出现的响应。我知道控件是“窗口”。我这样说是为了帮助解释我的例子。我会更清楚地编辑我的问题。
  • 感谢您的精彩编辑 :) 我有点想我实际上需要 3 个控件,编辑 |调整器 |编辑。我只是不知道要为分隔线使用哪种控件或如何读取更改。至于框架,我用C++已经10多年了,所以我有兴趣在使用框架之前重新学习winapi。
  • 我还要补充一点,我从未创建过 windows“windows ui”应用程序。只有 OpenGL,所以直到几周前,WinApi 对我来说大多是新的。
  • @Bradmage 实际上不是 3 个控件。这一切都可以在一个控件中实现,某种 ExtendedEditControl。但是,您仍然必须自己绘制此控件、绘制分隔线、对分隔线鼠标单击做出响应、处理文本输入等……这不是一项简单的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
相关资源
最近更新 更多