CTabCtrl SetItemRect?

Posted

技术标签:

【中文标题】CTabCtrl SetItemRect?【英文标题】: 【发布时间】:2012-11-30 15:23:36 【问题描述】:

我想改变标签的大小。

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

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

GetItemRect(int i, RECT* rc) 给了我矩形。我真正想要的是 SetItemRect。 SetItem 不能使用,因为该项目不包含其大小。它是根据我给它的内容计算出来的。 我可以在字符串末尾添加一个空格字符,但这违反了事物的自然顺序。我不会用 CStrings 调整像素。 SetSize 应该设置标签的大小(所有标签?)。但是我找不到不触发重绘的放置它的位置,如果我将它与 WM_PAINT 案例一起放置,则会引发无限循环。

这是我自定义绘制选项卡内容的地方,但我无法在此处调整它们的大小:

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;
    

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

【问题讨论】:

【参考方案1】:

IIRC 你需要覆盖 WM_NCCALCSIZE 消息。

【讨论】:

以上是关于CTabCtrl SetItemRect?的主要内容,如果未能解决你的问题,请参考以下文章

创建从 CTabCtrl 派生的类

如何更改 CTabCtrl 选项卡颜色?

如何调整 CTabCtrl 的大小以适合其内容

如何更改CTabCtrl选项卡颜色?

我正在扩展 CTabCtrl 但无法插入任何选项卡

在 CTabCtrl 中,我可以在运行时更改选项卡的图标吗