有没有更好的方法来强调CStatic控件中的第一个单词?

时间:2013-06-25 14:19:04

标签: c++ mfc underline

我有一个二维字符数组lineData和一个bool s,linesToUnderline数组。 lineData只存储文字。 linesToUnderlinelineData中的每一行存储true或false。 lineData中的每一行都以某种方式放入静态控件(动态创建)中以显示给用户。

现在,如果linesToUnderline[i] = true(对于0< = i< numLines),我需要显示只有带下划线的第一个单词的行,其余的通常的文本。

我所说的是:

First word underlined

目前,我正在考虑做的事情:

  1. 如果linesToUnderline[i] = false,请转到步骤4.
  2. lineData获取第一个单词,将其置于静态控件中,将该控件的字体设置为下划线。
  3. lineData删除第一个单词。
  4. lineData的像素长度增加X位置。
  5. lineData放在从位置X,Y开始的静态控件中。
  6. 如果i< numLines转到第1步。
  7. 停止。
  8. 您如何看待我的方法?我觉得必须有更好的方法来做到这一点。如果有,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您提出的方法不起作用。该控件一次只使用一种字体(对于其所有文本),并且它不提供在X,Y处附加文本的方法。

您必须对控件进行子类化并在WM_PAINT中自己绘制文本。您的油漆代码可以提供必要的功能。

答案 1 :(得分:0)

这个code project article通过继承静态控件来实现超链接控件。您可以将其用作进行自定义下划线的基础。您所要做的就是简化代码。