简单弄了滚动条和鼠标滚轮响应,可以发送消息添加条目,和删除条目。
显示效果就是简陋的一个条目矩形,里面显示条目内容……
还有一些基本的,比如应该当前有一个条目是焦点,突出显示,并且可以上下键来移动这个焦点,这些繁琐的步骤没弄了。
设置字体啊,颜色啥的都没开放接口。硬编码。
因为问答区有个人问了自绘控件怎么自己弄滚动条:https://bbs.125.la/forum.php?mod ... 14669184&extra=
仅供学习参考下……
全部代码:
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | cx_窗口过程 | 整数型 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | jb_temp | 文本型 | | | i | 整数型 | | |
cx_窗口过程 = sn_SetWindowLong (_启动窗口. 取窗口句柄 (), -4, 取子程序地址 (&wndproc )) 计次循环首 (30, i )jb_temp = 格式化文本 (“新条目 - %d”, i )_启动窗口. 发送信息 (1025, 0, 取变量数据地址 (jb_temp )) 计次循环尾 ()|
wndproc | 整数型 | | |
hwnd | | | | | msg | | | | | wp | | | | | lp | | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | jbs_条目 | 文本型 | | 0 | rcClient | RECT | | | op | 整数型 | | | si | SCROLLINFO | | | ps | PAINTSTRUCT | | | hdc | 整数型 | | | i | 整数型 | | | rcItem | RECT | | | 判断 (msg = 1025 )加入成员 (jbs_条目, 指针到文本 (lp )) sn_SendMessage (hwnd, 5, 0, 0 )sn_InvalidateRect_int (hwnd, 0, 1 )判断 (msg = 1026 )删除成员 (jbs_条目, 1, )sn_SendMessage (hwnd, 5, 0, 0 )sn_InvalidateRect_int (hwnd, 0, 1 )判断 (msg = 5 ) sn_GetClientRect (hwnd, rcClient )si.cbSize = 28 si.fMask = 位或 (1, 2 ) si.nMax = 30 × 取数组成员数 (jbs_条目 )si.nPage = rcClient.Bottom - rcClient.Top sn_SetScrollInfo (hwnd, 1, si, 真) 判断 (msg = 277 ) si.cbSize = 28 si.fMask = 23 sn_GetScrollInfo (hwnd, 1, si ) op = 位与 (65535, wp )判断 (op = 6 ) si.nPos = si.nMin 判断 (op = 7 ) si.nPos = si.nMax 判断 (op = 0 ) si.nPos = si.nPos - 30 判断 (op = 1 ) si.nPos = si.nPos + 30 判断 (op = 2 ) si.nPos = si.nPos - si.nPage 判断 (op = 3 ) si.nPos = si.nPos + si.nPage 判断 (op = 5 ) si.nPos = si.nTrackPos 返回 (0 )sn_SetScrollInfo (hwnd, 1, si, 真)sn_InvalidateRect_int (hwnd, 0, 1 )返回 (0 )判断 (msg = 522 ) si.cbSize = 28 si.fMask = 23 sn_GetScrollInfo (hwnd, 1, si ) 如果 (wp > 0 )si.nPos = si.nPos - 30 si.nPos = si.nPos + 30 sn_SetScrollInfo (hwnd, 1, si, 真)sn_InvalidateRect_int (hwnd, 0, 1 )判断 (msg = 15 ) si.cbSize = 28 si.fMask = 23 sn_GetScrollInfo (hwnd, 1, si ) hdc = sn_BeginPaint (hwnd, ps )sn_PatBlt (hdc, 0, 0, rcClient.Right, rcClient.Bottom, 16711778 ) sn_SetWindowOrgEx_int (hdc, 0, si.nPos, 0 )sn_SelectObject (hdc, sn_GetStockObject (17 )) 计次循环首 (取数组成员数 (jbs_条目 ), i )rcItem.Left = 0 rcItem.Top = 30 (i - 1 )rcItem.Bottom = 30 × i rcItem.Right = rcClient.Right sn_Rectangle (hdc, rcItem.Left, rcItem.Top, rcItem.Right, rcItem.Bottom )sn_InflateRect (rcItem, -1, -1 )sn_DrawText (hdc, jbs_条目 [i ], -1, rcItem, 位或 (4, 32 )) 计次循环尾 ()sn_EndPaint (hwnd, ps )返回 (0 )返回 (sn_CallWindowProc (cx_窗口过程, hwnd, msg, wp, lp )) 返回 (0)jb_temp = 到文本 (取现行时间 ()) _启动窗口. 发送信息 (1025, 0, 取变量数据地址 (jb_temp )) _启动窗口. 发送信息 (1026, 0, 1 )
123456.e
(17.35 KB, 下载次数: 74)
|