当前位置: 代码迷 >> Brew >> 如何给Widget中的文字设置下划线
  详细解决方案

如何给Widget中的文字设置下划线

热度:709   发布时间:2013-02-26 00:00:00.0
怎么给Widget中的文字设置下划线?
我想通过Widget模拟超链接文字,用户设定文字大小和颜色,我把文字以超连接的方式显示。

现在可以通过IWidget_SetFontClass(m_pWidget, fontClass)来设定字体格式,因为用户设定的字体是以bold|lager这类的格式设定的,系统的AEEFontsStandard.BID文件中对fontClass的定义如下:

#define AEECLSID_FONT_STANDARD11 0x0102f679
#define AEECLSID_FONT_STANDARD11B 0x0102f67a
#define AEECLSID_FONT_STANDARD15 0x01030852
#define AEECLSID_FONT_STANDARD15B 0x01030853
#define AEECLSID_FONT_STANDARD18 0x0102f67b
#define AEECLSID_FONT_STANDARD18B 0x0102f67c
#define AEECLSID_FONT_STANDARD23 0x0102f67d
#define AEECLSID_FONT_STANDARD23B 0x0102f67e
#define AEECLSID_FONT_STANDARD26 0x0102f67f
#define AEECLSID_FONT_STANDARD26B 0x0102f680
#define AEECLSID_FONT_STANDARD36 0x0102f681

也就是说只能设定加粗和字体大小。我两加下划线,通过下面的代码:

  IHFont* pTempFont = NULL;
  ITypeface *pitf = NULL;
  int dwResult;
 
  dwResult = ISHELL_CreateInstance(((AEEApplet*)GETAPPINSTANCE())->m_pIShell, AEECLSID_BTFETypeface,(void**)&pitf);
  int ret = 0;
  if (dwResult == SUCCESS) 
  {  
  ret = ITypeface_NewFontFromClassID(pitf, AEECLSID_ClvBold, 18, &pTempFont);
  }
  if(SUCCESS == ret)
  {
  IHFont_SetUnderlineStyle(pTempFont, HFONT_LINEEFFECT_SINGLE);
  }

  IWidget_SetFont(m_pWidget,(IFont*)pTempFont);

可以给文字加上下划线,可通过这种方法加下划线,等于重新给文字设了一个格式,会改变原来设定的字体大小和格式,改成了红色字体的格式,请问有没有办法还按照原来的格式给文字设置下划线?

------解决方案--------------------------------------------------------
buiw中似乎没有这样的功能哦
------解决方案--------------------------------------------------------
可以通过CustomWidget来实现~
  相关解决方案