• windowsclient开发--duilib显示html


    今天与大家分享的就是duilib这个库中,怎样做到显示html的。

    有些控件,如Text能够通过showhtml函数来设置是否显示html富文本。

    加粗

    {b}加粗{/b}

    斜体

    {i}斜体{/i}

    下划线

    {u}下划线{/u}

    被选中

    {s}被选中{/s}

    换行

    {n}

    链接
    这个是最重要的 个人认为。

    {a http://www.baidu.com}百度{/a>}

    比如:
    输入
    www.baidu.com {n} {b}加粗{/b} {n} {i}斜体{/i}{n} {u}下划线{/u} {n} {s}被选中{/s}

    显示:
    这里写图片描写叙述

    最后贴一段duilib中怎样处理link的代码:

    case _T('a'):  // Link
                    {
                        pstrText++;
                        while( *pstrText > _T('') && *pstrText <= _T(' ') ) pstrText = ::CharNext(pstrText);
                        if( iLinkIndex < nLinkRects && !bLineDraw ) {
                            CDuiString *pStr = (CDuiString*)(sLinks + iLinkIndex);
                            pStr->Empty();
                            while( *pstrText != _T('') && *pstrText != _T('>') && *pstrText != _T('}') ) {
                                LPCTSTR pstrTemp = ::CharNext(pstrText);
                                while( pstrText < pstrTemp) {
                                    *pStr += *pstrText++;
                                }
                            }
                        }
    
                        DWORD clrColor = pManager->GetDefaultLinkFontColor();
                        if( bHoverLink && iLinkIndex < nLinkRects ) {
                            CDuiString *pStr = (CDuiString*)(sLinks + iLinkIndex);
                            if( sHoverLink == *pStr ) clrColor = pManager->GetDefaultLinkHoverFontColor();
                        }
                        //else if( prcLinks == NULL ) {
                        //    if( ::PtInRect(&rc, ptMouse) )
                        //        clrColor = pManager->GetDefaultLinkHoverFontColor();
                        //}
                        aColorArray.Add((LPVOID)clrColor);
                        ::SetTextColor(hDC,  RGB(GetBValue(clrColor), GetGValue(clrColor), GetRValue(clrColor)));
                        TFontInfo* pFontInfo = pManager->GetDefaultFontInfo();
                        if( aFontArray.GetSize() > 0 ) pFontInfo = (TFontInfo*)aFontArray.GetAt(aFontArray.GetSize() - 1);
                        if( pFontInfo->bUnderline == false ) {
                            HFONT hFont = pManager->GetFont(pFontInfo->sFontName, pFontInfo->iSize, pFontInfo->bBold, false, pFontInfo->bItalic);
                            if( hFont == NULL ) {
                                hFont = pManager->AddFont(g_iFontID, pFontInfo->sFontName, pFontInfo->iSize, pFontInfo->bBold, false, pFontInfo->bItalic);
                                g_iFontID += 1;
                            }
                            pFontInfo = pManager->GetFontInfo(hFont);
                            aFontArray.Add(pFontInfo);
                            pTm = &pFontInfo->tm;
                            ::SelectObject(hDC, pFontInfo->hFont);
                            cyLine = MAX(cyLine, pTm->tmHeight + pTm->tmExternalLeading + (int)aPIndentArray.GetAt(aPIndentArray.GetSize() - 1));
                        }
                        ptLinkStart = pt;
                        bInLink = true;
                    }
                    break;
  • 相关阅读:
    磁盘分区,fdisk,gdisk,开机自动挂载,swap分区,修复文件系统,备份文件
    进程脱离窗口运行,僵尸、孤儿进程
    top命令、kill命令
    进程状态
    rpm包、挂载、yum命令
    DRF源码分析
    forms组件源码
    Django CBV源码分析
    魔法方法
    鸭子类型
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7352940.html
Copyright © 2020-2023  润新知