注册 登录
编程论坛 VC++/MFC

ctabctrl靠右,字体方向是竖的,怎么样调过来?

lonelydeer 发布于 2012-09-25 15:16, 838 次点击
ctabctrl靠右,字体方向是竖的,怎么样调过来?
不知道怎么重载!
3 回复
#2
眼底星空2012-09-25 16:25
在资源编辑里,可以修改TabCtrl的风格的。
将vertical属性置为true,Bottom属性也设置为true,就能使tabctrl靠右了。
字体方向是竖的,可能需要自己写DrawItem了。
#3
lonelydeer2012-09-25 16:28
就是drawItem不知道怎么样重写
#4
眼底星空2012-09-25 18:08
在DrawItem里重画tab标题。
我试着写了下。
font还有rect可以自己调整。
drawtext可以处理换行,所以可以多行。

void CTestTabCtrl::DrawItem(_In_ LPDRAWITEMSTRUCT lpDrawItemStruct)
{
    char szItemName[16];
    TCITEM ti;
    memset(&ti, 0, sizeof(TCITEM));
    ti.mask = TCIF_TEXT;
    ti.pszText = szItemName;
    ti.cchTextMax = 16;
    ti.iImage = -1;

    BOOL bRtn = GetItem(lpDrawItemStruct->itemID, &ti);
    if(!bRtn || NULL == ti.pszText)
        return;

    CFont MyFont;
    MyFont.CreateFont(9, 9, 0, 0,FW_NORMAL,FALSE,FALSE,
        FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,
        CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
        FIXED_PITCH|FF_MODERN, "宋体");

    SelectObject(lpDrawItemStruct->hDC, MyFont);
    CRect rect = lpDrawItemStruct->rcItem;
    rect.top += 8;
    DrawText(lpDrawItemStruct->hDC, ti.pszText, strlen(ti.pszText), &rect, DT_VCENTER|DT_CENTER);

    MyFont.DeleteObject();
}
1