2016-04-29 141 views
1

我正在使用Winapi与C++,并且我希望一旦关闭选项卡,它将重点放在最后一个选项卡上。但唯一发生的事情就是我的所有领域都“消失”了,但那其实并不是我的问题。真正的问题是我无法使程序专注于选项卡。我用Winapi设置活动选项卡控件

TabCtrl_SetCurFocus(hTab, TabCtrl_GetItemCount(hTab)); 
TabCtrl_SetCurSel(hTab, TabCtrl_GetItemCount(hTab)); 

但没有任何反应,然后我用的功能TabCtrl_HighlightItem但G ++告诉我,它没有宣布,我已经明确地发出TCM_HIGHLIGHTITEM消息,但它告诉我,它也没有声明。我真的很困惑,要么微软文档不是最新的,要么我做错了什么。

+1

关于stackoverflow的问题应该关注** one **问题。最后一段提出了一个新问题。 – IInspectable

+0

所以我应该为此创建另一个问题? – Neox

+1

如果您有两个选项卡,TabCtrl_GetItemCount将返回2,但选项卡是数字0和1。 –

回答

1

TabCtrl_SetCurSel从零索引开始,而TabCtrl_GetItemCount返回标签总数。这应该可以解决你的问题:

int lastTab = TabCtrl_GetItemCount(hTab) - 1; 
TabCtrl_SetCurSel(hTab, lastTab); 

我不确定你的意思。如果选项卡控制标记为WS_TABSTOP,则活动选项卡周围应该有焦点矩形。您可能需要按Alt键才能看到焦点矩形。但有时候这并不起作用,例如,如果有一个需要关注的编辑控件。

TabCtrl_SetCurFocusTCS_BUTTONS结合使用。请参阅documentation

TabCtrl_HighlightItem如果主题处于活动状态,则不执行任何操作。请参阅文档documentation

TabCtrl_HighlightItem可能不会在MinGW中声明(在这种情况下无关紧要)。如果缺少其他声明,您可能需要使用像VS 2015这样的更新的免费编译器。

+0

'TabCtrl_SetCurSel'已经使我想要的。请原谅我的坏英语,这就是我所说的“重点”。我会尝试它(我很确定它会工作,我不能相信我因为这么小的错误而被卡住了)。 – Neox

+0

它的作品,我觉得真的很笨。再次感谢... – Neox

+1

没问题。我在尝试回答时学到了一些东西。 –

相关问题