放置窗口于SetWindowText之后

sxl123 2009-12-22 11:48:13
2个CStatic控件。一个我自己的CLink派生CStatic的超链接类。现在我想在第一个控件中SetWindowText一段文本,然后紧跟这段文本之后插入我这个能有超链接文字的CStatic控件。怎么得到这个位置呢?
...全文
90 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
放置第一个控件置后,根据其位置定位第二个控件,用SetWindowPos就可以了。
aoyihuashao 2009-12-22
  • 打赏
  • 举报
回复
这个应该可以把,获取字符串显示面积。
aoyihuashao 2009-12-22
  • 打赏
  • 举报
回复
CDC::GetTextExtent
CSize GetTextExtent( LPCTSTR lpszString, int nCount ) const;

CSize GetTextExtent( const CString& str ) const;

Return Value

The dimensions of the string (in logical units) in a CSize object.

sxl123 2009-12-22
  • 打赏
  • 举报
回复
楼上没明白我的意思。2个控件,位置先是在资源中先指定了的。然后在程序中根据第一个控件文本的输出位置,来动态的摆放第二个控件的位置。
aoyihuashao 2009-12-22
  • 打赏
  • 举报
回复
把ID改下,比如 IDC_STATIC1,
这样就可以用GETDLGITEM获得了。
dvlinker 2009-12-22
  • 打赏
  • 举报
回复
用GetWindowRect()获取第一个控件相对于父窗口的坐标,然后大概估计第二个控件相对父窗口的位置,用MoveWindow()函数将第二个控件移到自己想要的位置,应该就可以了吧,不知道是不是你想要的效果。
LongZT007 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sxl123 的回复:]
GetTextExtent得到的是字串一行的显示面积,然而CStati会根据自己的大小调整这个字串,不可能一行输出的,所以假设是
xxx
xxx
x
第一第二行加了回车,这段字串用GetTextExtent得到的cy也仅仅是一个字的高度而已
[/Quote]
Static会根据字段长度调整的吗?好像是固定死的吧.
楼主试试这个函数GetTextMetrics(),该函数可以得到当前设备描述表中选定的字体信息,其中就有当前选定的字体高度,宽度.
sxl123 2009-12-22
  • 打赏
  • 举报
回复
自己顶
sxl123 2009-12-22
  • 打赏
  • 举报
回复
GetTextExtent得到的是字串一行的显示面积,然而CStati会根据自己的大小调整这个字串,不可能一行输出的,所以假设是
xxx
xxx
x
第一第二行加了回车,这段字串用GetTextExtent得到的cy也仅仅是一个字的高度而已
sxl123 2009-12-22
  • 打赏
  • 举报
回复
没用过CStatic吗??
放置时大小已经是固定了的
现在我要在程序中动态调整

使第二个控件要正好在最后一个字符的后面

关键是这个位置不好得到
TADICAN 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cftxlin 的回复:]
放置第一个控件置后,根据其位置定位第二个控件,用SetWindowPos就可以了。
[/Quote]
Right
sxl123 2009-12-22
  • 打赏
  • 举报
回复
或许我应该具体一点。
例如
第一个控件输出
XXX
XXX
X
我现在要把第二个控件的位置动态调整到最后一个x的末尾
可问题是,我怎么能得到最后一个x的位置呢?xxx然后回车换行
,SetWindowText之后没有办法很容易的就知道最后一个x的位置么?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧