gpt4 book ai didi

WINAPI 带有自定义边框的编辑控件

转载 作者:行者123 更新时间:2023-12-02 01:55:36 25 4
gpt4 key购买 nike

在纯 WinAPI(无 MFC)中实现编辑控件的自定义圆角边框的正确方法是什么?我需要像这样的边框编辑:

enter image description here

我应该子类化编辑控件并在 WM_NCPAINT 或类似的东西中进行自定义绘画吗?

最佳答案

我想你有两个选择:

  • 正如您所说,您可以子类化并覆盖 WM_NCPAINT 等以提供您自己的非客户区域
  • 或者,您可以简单地关闭编辑控件上的边框样式,并让父窗口负责绘制框架。

使用选项#1,您需要重写WM_NCCALCSIZE以使编辑控件的非客户区域更大(即使客户区域更小),然后WM_NCPAINT code> 渲染您的自定义框架。您可能还需要处理 WM_NCHITTEST。当然,您需要使控件本身的物理尺寸更大,以适应额外的框架厚度。

这取决于您的应用程序设计以及您希望使用多少个这样的控件,但如果是我,我会选择选项 #2。修改系统控件的标准绘图行为通常并不像您想象的那么容易,其中许多控件都有数十年积累的缺陷和兼容性修复程序。

如果您确保编辑控件上未设置 WS_BORDERWS_EX_CLIENTEDGE 样式,则该控件将没有自己的可见边框。然后你所要做的就是拥有父窗口,在处理WM_PAINT时,在它周围绘制框架。确保在父窗口上设置 WS_CLIPCHILDREN 样式,以便您的自定义绘图不会覆盖编辑控件。

这两条路最终可能都会奏效,所以这取决于你走哪条路。

关于WINAPI 带有自定义边框的编辑控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com