Mfc CTabCtrl SetItemRect?

Mfc CTabCtrl SetItemRect?,mfc,ctabctrl,Mfc,Ctabctrl,我想更改选项卡的大小 我们在选项卡中添加了一个结束十字,但它与选项卡的文本有很大的冲突 到目前为止,我已经意识到以下几点: GetItemRect(inti,RECT*rc)给出了RECT。我真正想要的是SetItemRect SetItem无法使用,因为该项不包含其大小。它是根据我给它的内容计算出来的 我可以在字符串的末尾添加一个空格字符,但这与事物的自然顺序背道而驰。我不会用cstring调整像素 SetSize用于设置选项卡的大小(所有选项卡?)。但我无法找到不触发重画的地方,如果我把

我想更改选项卡的大小

我们在选项卡中添加了一个结束十字,但它与选项卡的文本有很大的冲突

到目前为止,我已经意识到以下几点:

  • GetItemRect(inti,RECT*rc)
    给出了RECT。我真正想要的是SetItemRect
  • SetItem
    无法使用,因为该项不包含其大小。它是根据我给它的内容计算出来的
  • 我可以在字符串的末尾添加一个空格字符,但这与事物的自然顺序背道而驰。我不会用cstring调整像素
  • SetSize
    用于设置选项卡的大小(所有选项卡?)。但我无法找到不触发重画的地方,如果我把它和WM_画框放在一起,就会触发一个无限循环
这是我自定义绘制选项卡内容的地方,但我无法在此处调整它们的大小:

LRESULT CSkinnedTabCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
switch (message) {
    case WM_PAINT: {
        ...

        CPaintDC dc(this); 

        INT nCount = GetItemCount();

        for (INT i = 0; i < nCount; i++) {
            CRect rc;
            GetItemRect(i, rc);
            DrawItem(dc, i, rc);
        }

        return TRUE;
    }
LRESULT CSkinnedTabCtrl::WindowProc(UINT消息、WPARAM WPARAM、LPARAM LPARAM)
{
开关(信息){
案例WM_油漆:{
...
CPaintDC dc(本);
INT nCount=GetItemCount();
for(INT i=0;i

在哪里设置选项卡的大小以及如何设置?

IIRC您需要覆盖WM\u NCCALCSIZE消息