2010-02-19 128 views

回答

1

在以this answer评论你建议业主绘制列表框中的项目你说:

我不知道为什么我必须做的是,当需要的功能在列表框已经存在

组合框实际上由三个本地子窗口组成 - 组合框本身,嵌入式编辑和列表框。您可以使用GetComboBoxInfo()函数来填充COMBOBOXINFO结构(即TComboBoxInfo记录)和有关该控件的信息,并将返回其中的3个HWND元素。这样你就可以改变列表框的外观和行为。原则上。

对于要使用制表位的列表框,需要设置LBS_USETABSTOPS样式标志。不幸的是,这不能在以后打开,列表框必须与它一起创建。因此,只有当您可以打开列表框中的样式标志时才可以使用该功能,该列表框在组合框的CreateWindowEx()调用期间创建。 AFAICS只能通过挂接CreateWindowEx()调用本身,识别创建列表框的内部调用以及更改传递的样式来完成。这意味着代码的运行时修改,而不是在您的可执行文件中,但在Windows DLL中。

所有者绘制列表项看起来会更容易。

+0

感谢您的完整和详细的解释,完全解答我的问题。然而,做这件事太费事了。 – 2010-02-21 19:28:45

0

从我所知道的有没有这么简单的方式,这里TabWidth,但你可以覆盖Paint方法,并自己画。查看列表框和组合框可能会有所帮助。

+0

我认为OnDrawItem方法会更有用 – SimaWB 2010-02-19 12:52:07

+0

我想知道为什么当必需的功能已经存在于列表框上时我必须这样做。 – 2010-02-19 14:56:26