我正在使用带有C ++的Winapi,我想在关闭标签时做出类似的操作,它会关注最后一个标签。但唯一发生的事情就是我所有的领域"消失",但这实际上不是我的问题。真正的问题是我无法将程序集中在一个标签上。我用了
TabCtrl_SetCurFocus(hTab, TabCtrl_GetItemCount(hTab));
TabCtrl_SetCurSel(hTab, TabCtrl_GetItemCount(hTab));
但没有任何反应,然后我使用函数TabCtrl_HighlightItem
但是g ++告诉我它没有被声明,我已经明确地发送了TCM_HIGHLIGHTITEM
消息,但它告诉我它也不是&# 39; t宣布。我真的很困惑,要么微软的文档不是最新的,要么我做错了。
答案 0 :(得分:1)
TabCtrl_SetCurSel
从零索引开始,而TabCtrl_GetItemCount
返回标签总数。这应该可以解决您的问题:
int lastTab = TabCtrl_GetItemCount(hTab) - 1;
TabCtrl_SetCurSel(hTab, lastTab);
我不确定你的重点是什么意思。如果选项卡控件具有WS_TABSTOP
标志,则活动选项卡周围应该有一个焦点矩形。您可能必须按 Alt 键才能看到焦点矩形。但有时这不起作用,例如,如果有一个需要关注的编辑控件。
TabCtrl_SetCurFocus
与TCS_BUTTONS
结合使用。见documentation
TabCtrl_HighlightItem
不会执行任何操作。请参阅文档documentation
TabCtrl_HighlightItem
可能不会在MinGW中声明(在这种情况下无关紧要)。如果缺少其他声明,您可能希望使用更新的免费编译器,如VS 2015。