下你所需,载你所想!
汇集开发技术源码资料

易语言组合框自适应宽度模块源码

:9.968KB :1 :2019-12-15 08:27:22

部分简介

模块名称:组合框_自适应宽度
---------------------------
模块 MD5:59f1884d07e281db10fe17b176f9f61c
---------------------------
模块大小:0.009045600891113 MB(9.2626953125 KB)

.子程序 _组合框_自适应宽度
.参数 hwnd, 整数型
.局部变量 hDC, 整数型
.局部变量 maxWidth, 整数型
.局部变量 str, 文本型
.局部变量 len, 整数型
.局部变量 i, 整数型
.局部变量 size, Size
.局部变量 hDC2, 整数型
.局部变量 hFont, 整数型
.局部变量 hFontOld, 整数型

hDC = GetDC (hwnd)
' 直接取出的hDC竟然不包含字体信息,很奇怪,GetTextFace() 取hDC的字体名称始终为“System”
' 为了不破坏原始DC,这里新建一个临时DC,并选入正确的字体
hFont = SendMessage_ (hwnd, #WM_GETFONT, 0, 0)
hDC2 = CreateCompatibleDC (hDC)
hFontOld = SelectObject (hDC2, hFont)
' 遍历组合框中的所有项目,找出最长的一项
.计次循环首 (SendMessage_ (hwnd, #CB_GETCOUNT, 0, 0), i)
len = SendMessage_ (hwnd, #CB_GETLBTEXTLEN, i - 1, 0)
str = 取空白文本 (len + 1)
SendMessage_is (hwnd, #CB_GETLBTEXT, i - 1, str)
GetTextExtentPoint32 (hDC2, str, 取文本长度 (str), size) ' 自适应的关键就是这里了
.如果真 (maxWidth < size.cx)
maxWidth = size.cx
.如果真结束

.计次循环尾 ()
.如果真 (maxWidth ≠ 0)
SendMessage_ (hwnd, #CB_SETDROPPEDWIDTH, maxWidth + 10, 0) ' 增加一点边距
.如果真结束
.如果真 (hDC ≠ 0)
ReleaseDC_ (hwnd, hDC)
.如果真结束
.如果真 (hFontOld ≠ 0)
SelectObject (hDC2, hFontOld)
.如果真结束
.如果真 (hDC2 ≠ 0)
DeleteDC (hDC2)

易语言组合框自适应宽度模块源码

热门推荐

相关文章