TreeView_SetExtendedStyle 不应用某些样式,我做错了什么?
TreeView_SetExtendedStyle does not apply certain styles, what am I doing wrong?
我想 "play around" 使用 new extended styles,尤其是那些使用复选框操作的。
问题是其中 none 个似乎有效。
我无法确定 TVS_EX_DOUBLEBUFFER
是否有效,因为我的树视图很小。我还没有测试 TVS_EX_RICHTOOLTIP
。除此之外,无论我设置什么其他样式,我都看不到任何效果。
这是相关的片段:
HWND hwndTV = CreateWindowEx(...);
// first, add checkboxes
DWORD dwStyle = GetWindowLong(hwndTV, GWL_STYLE);
dwStyle |= TVS_CHECKBOXES;
SetWindowLongPtr(hwndTV, GWL_STYLE, dwStyle);
// now add extended window styles
HRESULT h = TreeView_SetExtendedStyle(hwndTV,
TVS_EX_PARTIALCHECKBOXES, TVS_EX_PARTIALCHECKBOXES);
// insert items...
我检查了 TreeView_SetExtendedStyle macro 的 return 值,它没有失败,这让我更加沮丧。
问题:
你能告诉我如何正确应用扩展样式吗?例如,如何正确设置 TVS_EX_PARTIALCHECKBOXES
或任何其他?
谢谢。
您设置样式的方式没有任何问题 - 当您设置样式时,这就是问题所在。
您需要先设置 TVS_EX_PARTIALCHECKBOXES
扩展样式 ,然后再设置 TVS_CHECKBOXES
。这是因为设置 TVS_CHECKBOXES
会触发为树视图创建状态图像列表,如果在创建时设置了部分样式,则此图像列表仅包含 "partial" 图像。如果稍后设置 TVS_EX_PARTIALCHECKBOXES
,则不会自动重新创建图像列表。
此外,如果您想使用部分复选框样式,则不能在对 CreateWindowEx
的调用中指定 TVS_CHECKBOXES
,因为在控件之前无法设置 TVS_EX_PARTIALCHECKBOXES
已创建。
我想 "play around" 使用 new extended styles,尤其是那些使用复选框操作的。
问题是其中 none 个似乎有效。
我无法确定 TVS_EX_DOUBLEBUFFER
是否有效,因为我的树视图很小。我还没有测试 TVS_EX_RICHTOOLTIP
。除此之外,无论我设置什么其他样式,我都看不到任何效果。
这是相关的片段:
HWND hwndTV = CreateWindowEx(...);
// first, add checkboxes
DWORD dwStyle = GetWindowLong(hwndTV, GWL_STYLE);
dwStyle |= TVS_CHECKBOXES;
SetWindowLongPtr(hwndTV, GWL_STYLE, dwStyle);
// now add extended window styles
HRESULT h = TreeView_SetExtendedStyle(hwndTV,
TVS_EX_PARTIALCHECKBOXES, TVS_EX_PARTIALCHECKBOXES);
// insert items...
我检查了 TreeView_SetExtendedStyle macro 的 return 值,它没有失败,这让我更加沮丧。
问题:
你能告诉我如何正确应用扩展样式吗?例如,如何正确设置 TVS_EX_PARTIALCHECKBOXES
或任何其他?
谢谢。
您设置样式的方式没有任何问题 - 当您设置样式时,这就是问题所在。
您需要先设置 TVS_EX_PARTIALCHECKBOXES
扩展样式 ,然后再设置 TVS_CHECKBOXES
。这是因为设置 TVS_CHECKBOXES
会触发为树视图创建状态图像列表,如果在创建时设置了部分样式,则此图像列表仅包含 "partial" 图像。如果稍后设置 TVS_EX_PARTIALCHECKBOXES
,则不会自动重新创建图像列表。
此外,如果您想使用部分复选框样式,则不能在对 CreateWindowEx
的调用中指定 TVS_CHECKBOXES
,因为在控件之前无法设置 TVS_EX_PARTIALCHECKBOXES
已创建。