显示文本自动换行



//显示文本
void CHelpContainer::ShowForuthLab(CWindowGc& gc, const TRect& aRect) const
    {
    const CFont* font = NULL;
    font = LatinPlain12();
    gc.UseFont(font);

    HBufC* Hbufc = HBufC::New(iValue->Des().Length());
    TPtr16 string = Hbufc->Des();
    string.CopyC(iValue->Des());
    TPtr16 text = Hbufc->Des();
    TInt pLength = 0;
    TInt pstart = 0;
    TInt i = 0;
    TInt lineHeight = 14;

    TInt leng = font->TextWidthInPixels(iValue->Des());

    if (leng <= aRect.Width())//判断一行是否可以显示完
        {
        gc.DrawText(string, TPoint(aRect.iTl.iX, aRect.iTl.iY));
        }
    else
        {
        // pLength ---得到一行显示的文本的个数
        pLength = font->TextCount(string.Mid(pstart), aRect.Width());
        do
            {
            text.Zero();
            text.CopyC(string.Mid(pstart, pLength));
            //iItemArray->AppendL(text);
            gc.DrawText(text, TPoint(aRect.iTl.iX, aRect.iTl.iY + lineHeight
                    * i));
            i++;
            string.CopyC(string.Mid(pstart + pLength));
            pLength = font->TextCount(string.Mid(pstart), aRect.Width());
            }
        while (pLength > 0);
        }

    delete Hbufc;

    //释放画笔
    gc.DiscardFont();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值