MFC中Static text怎样判断控件中的字符串是否超出控件的宽度。100分求解。

MFC中Statictext怎样判断控件中的字符串是否超出控件的宽度。也就是说当我设置了wordellipsis的属性为true时,如果字符串的长度超出控件的宽度,就会自... MFC中Static text怎样判断控件中的字符串是否超出控件的宽度。也就是说当我设置了word ellipsis的属性为true时,如果字符串的长度超出控件的宽度,就会自动以...来结尾。
那么怎么判断字符串是以...来结尾的,还是正常显示的。也就是长度超没超。
由于这个是微软封装好的,所以不知道到底怎么实现,求大神。100分虽少,但是诚心啊。只能悬赏100分,上限了,悲剧。
我使用CDC的方法获取字符串的宽度,发现不是非常准确。有时没超过但计算却是超过。您帮我看下。CDC *pDC = GetDlgItem( IDC_LOCATION )->GetDC();CSize size = pDC->GetTextExtent( m_cstrDirectory );GetDlgItem( IDC_LOCATION )->ReleaseDC( pDC );CRect rect;GetDlgItem( IDC_LOCATION )->GetWindowRect(&rect);if(size.cx>rect.Width()) //不知道是不是这里有问题,毕竟一个是long一个是int

这个是没超出,但是结果tooltip出来了,tooltip出来的条件就是if(size.cx>rect.Width())
展开
 我来答
何处淬吴钩
2013-05-07 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2414万
展开全部
越是这样的小问题越是难以解决。如果字符串是单一的中文字符,或者ascii字符还好点,如果混合的话,需要分别计算每个字符的宽度。可以用api获得字符的宽度。不愿意用的话自己粗略计算一下也可以。
以静态文本控件m_txt为例(其他控件要考虑边缘空白)用静态文本控件正好容纳1000个中文字符的情况下来计算中文字符所占宽度,其他字符类似。
然后在程序中就可以通过计算字符串整体宽度与控将窗口宽度(m_txt->GetClientRect或 m->txtGetWidnowRect)相比较来判断了.
字符串可以通过getwindowtext来获得
追问
你好,我测试了下,发现这个方法不是很准确啊。问题我补充了,可以看上面。有截图
龚炜林
推荐于2018-05-01 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:582万
展开全部
其它的我还没怎么探究,不过确实有个可以获取宽度的方法。
假设你关联控件变量m_text
CString text;
m_text.GetWindowText(text);
CDC *pDC = m_text.GetDC();
CSize size = pDc->GetTextExtent(text);
m_text->ReleaseDC(pDC);

//size就是字符串输出时的长宽,你拿它和文本框大小比较下。
注:大于了文本框应该就会...结尾,小于则不会。
追问
您好,非常感谢您。我测试了您的方法,发现不是非常准确。有时没超过但计算却是超过。您帮我看下。
CDC *pDC = GetDlgItem( IDC_LOCATION )->GetDC();
CSize size = pDC->GetTextExtent( m_cstrDirectory );
GetDlgItem( IDC_LOCATION )->ReleaseDC( pDC );
CRect rect;
GetDlgItem( IDC_LOCATION )->GetWindowRect(&rect);
if(size.cx>rect.Width()) //不知道是不是这里有问题,毕竟一个是long一个是int
追答
嗯,我是默认你使用static text默认的字体的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2013-05-07 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2854万
展开全部

CRect rect;

 GetClientRect (&rect);

 int cx=rect.Width ();

 int cy=rect.Height ();

 

获得程序对话空大小·····

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
565210
2013-05-07 · TA获得超过358个赞
知道小有建树答主
回答量:812
采纳率:0%
帮助的人:347万
展开全部
函数获取字体大小,用Getwindowrect获取控件大小,一比较就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式