相关疑难解决方法(0)

Win32:如何自定义绘制编辑控件?

我需要实现EM_SETCUEBANNER的功能,其中文本提示出现在Edit控件中:

编辑控件中的提示横幅示例

问题是我无法使用通用控件的第6版,这是获得Microsoft提供的cue横幅实现所需的.

我已经研究过简单地改变编辑控件的文本和字体格式

Dark Gray Italic Text
Run Code Online (Sandbox Code Playgroud)

但它会抛出Change事件(由更高的组件库提供的组件包装器),我无法找到避免的方法.

所以我改为自定义绘制文本,在控件未聚焦且为空时绘制Cue Banner文本,否则依赖默认绘制.

Edit控件不能很好地公开自定义绘图机制,如ListView,TreeView和其他提供的.

其他人已经研究过它,但这似乎是一项几乎不可能完成的任务:

从事情的方式来看,我将不得不处理以下消息:

  • WM_ERASEBKGND,WM_PAINT(原因很明显)
  • WM_SETFOCUS,WM_KILLFOCUS(防止白条显示 - 如上所述)
  • WM_CHAR(处理和更新控件中的文本)

而且我还需要找到一种在控件中显示插入符号的方法,因为我还没有找到一种方法允许Windows为我这样做而不用画我提到的白条.

这将会非常好玩.:翻白眼:

鉴于Windows Edit控件从未打算自定义绘制:有没有人知道如何自定义绘制Windows编辑控件?


注意:我也会接受解决问题的答案,而不是回答我的问题.但是其他任何想要自定义绘制编辑控件的人,遇到这个问题,都可能会有一个答案.

windows winapi custom-draw

11
推荐指数
3
解决办法
1万
查看次数

标签 统计

custom-draw ×1

winapi ×1

windows ×1