我有一个2D字符数组lineData和一个bool数组linesToUnderlinelineData仅存储文本。 linesToUnderlinelineData中的每一行存储true或false。 lineData中的每一行都以某种方式置于静态控件(动态创建)中,以显示给用户。

现在,如果linesToUnderline[i] = true(对于0 numLines),则需要显示仅在下划线的第一个单词的行,而其余文本则正常显示。

我在说什么看起来像:

所以目前,我在想什么:

  • 如果linesToUnderline[i] = false,请转到步骤4。
  • lineData获取第一个单词,将其放在静态控件中,将该控件的字体设置为带下划线的字体。
  • lineData中删除第一个单词。
  • lineData的像素长度开始的X位置递增。
  • lineData放在静态控件中,从位置X,Y开始。
  • 如果i <numLines转到步骤1。
  • 停止。

  • 您如何看待我的方法?我认为必须有更好的方法来做到这一点。如果有,有人可以帮我吗?

    最佳答案

    您建议的方法将不起作用。控件一次仅使用一种字体(用于其所有文本),并且没有提供在X,Y处附加文本的方法。

    您必须将控件子类化,并在WM_PAINT中自己绘制文本。您的绘画代码可以提供必要的功能。

    10-07 13:35