DT_WORDBREAK、DT_PATH_ELLIPSIS和DT_WORD_ELLIPSIS的使用

        先看一下相关标识符的相关说明:

        DT_END_ELLIPSIS:对于显示的字符串,如果结束的字符串的范围不在矩形内,它会被截断并以省略号标识。

        DT_WORDBREAK:当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间换行。

        DT_WORD_ELLIPSIS:截短不符合矩形的正文,并增加省略号。

        DT_PATH_ELLIPSIS:对于显示的字符串,会用省略号替换字符串中间的字符,以确保结果能在矩形范围内。 如果该字符串包含反斜杠(\)字符,它会尽可能的保留最后一个反斜杠之后的正文。

        下面就来说说下面的两种效果是如何实现的。

        1、当提示的字符串中包含的路径过长时,路径中部分文字会以省略号代替

         参考QQ的效果,如下所示:

        

         实现效果的相关如下所示:

	// 此处添加DT_PATH_ELLIPSIS和DT_WORD_ELLIPSIS,以解决提示文字中包含路径过长显示不全问题
	// 使用上面的两种风格,路径过长时路径中部分文字会以省略号代替
	UINT uTextStyle = m_pNoteText->GetTextStyle();
	uTextStyle |= DT_WORDBREAK|DT_PATH_ELLIPSIS|DT_WORD_ELLIPSIS|DT_END_ELLIPSIS|DT_EDITCONTROL;
	m_pNoteText->SetTextStyle( uTextStyle );

        2、信息分行显示,单行的信息显示不下时行尾处显示省略号

        要实现如下的效果:

  

        实现效果的相关如下所示:

	// DT_WORD_ELLIPSIS: 上下线信息分行显示,一行显示一项信息(分行是在提示信息中添加\n实现),
	// 一行显示不全用省略号
	UINT uStyle = m_pTxtOnOffInfo->GetTextStyle();
	uStyle &= ~DT_WORDBREAK; // 需要将DT_WORDBREAK去掉,否则DT_WORD_ELLIPSIS会失效
	uStyle |= DT_WORD_ELLIPSIS;
	m_pTxtOnOffInfo->SetTextStyle( uStyle );

你可能感兴趣的:(DT_WORDBREAK、DT_PATH_ELLIPSIS和DT_WORD_ELLIPSIS的使用)