2

我想改变标签的大小。

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

在此处输入图像描述

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

  • 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;
    }

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

4

1 回答 1

0

IIRC you need to overwrite WM_NCCALCSIZE message.

于 2013-02-17T08:55:00.913 回答