使用了CHyperLink,并用SetLinkFont设置了一个比较大的字体进去结果显示的文字只有左上角的一部分了。
奇怪之余查看WTL源代码,发现有这么一个方法“CalcLabelRect”,在SetLable时会自动调用。而我们没有主动调用SetLable时会默认帮我们用Static的GetWindowText来设置一次,也就是在这个时候用Static的初始字体计算了一次显示区域。而我们在SetLinkFont之后如果不主动调用一次CalcLabelRect的话就会产生我上面的问题。
解决方案:
CHyperLink m_linkOOXX;
m_linkOOXX.SetLinkFont(biggerFont);
m_linkOOXX.CalcLableRect();