TabCtrl_SetItemSize和用户绘制选项卡控件

我有这个Win32用户绘制的选项卡控件创build为:

CONTROL "Tab1",IDC_TAB_CONT,"SysTabControl32",TCS_BOTTOM | TCS_OWNERDRAWFIXED | NOT WS_VISIBLE,0,14,185,88 

我想要这个控件的标签大小调整为从来没有看到“ 滑动箭头 ”:

替代文字

现在,几乎所有关于此控件的工作都按预期工作,除了它不响应TabCtrl_SetItemSize 。 尝试尽可能的,当我绘制它们(在传递给WM_DRAWITEMDRAWITEMSTRUCT )时,我得到的标签的大小始终是适合其中最长的标题的大小,而不是我用TabCtrl_SetItemSize设置的大小。

但是,在TabCtrl_SetItemSize文档中 ,它说:

[ TabCtrl_SetItemSize ]在固定宽度或自绘制选项卡控件中设置制表符的宽度和高度。

我设法resize的唯一方法是通过向控件发送一个TCM_SETITEM消息,并在绘制时在其中写入所需的文本,在其中设置所需长度的虚拟string。 这是相当不方便,不是一个特别好的黑客。

有谁知道吗?

  1. 为什么TabCtrl_SetItemSize不能按预期工作? 和/或
  2. 如何正确设置标签大小?

非常感谢,

JOCE。

  • 设置TCS_OWNERDRAWFIXED样式是不够的,你还要添加TCS_FIXEDWIDTH样式。

  • 如果图标存在,则标签的最小尺寸至少为图标宽度+ 3。
    如果您有图标(imageList附加到tabControl),即使使用固定宽度(如果可用空间少于标签数量*(图标宽度+3),也可能会获得这些“滑动箭头”