效果:
1、通过滚轮拖动进行滚动显示
2、通过鼠标滚轮显示
3、保证滚动每行和字实际高度一致
4、滚轮行数和需要滚动的字行数一致
正文:需要自绘静态文本框
一、使用滚轮和滚动条
在PreTranslateMessage函数中判断滚轮消息
UINT btnID;
//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。
btnID = GetWindowLong(pMsg->hwnd, GWL_ID);
int zDelta = (short)HIWORD(pMsg->wParam);
switch (pMsg->message)
{
case WM_MOUSEWHEEL:
{
if (btnID == 静态文本框ID)
{
通过判断zDelta为-120还是120来累加或者累减滚动行数这个变量就可以了
同样使用滚动条也是一样
二、实现滚动行效果
在DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)中添加代码
lpDrawItemStruct->CtlID:判断当前静态文本框ID
//显示,str为静态文本框显示字
CDC dc;
dc.Attach(lpDrawItemStruct->hDC); //获取控件DC
dc.SetBkMode(TRANSPARENT); //设置背景色透明
CString str;
GetWindowText(str);
dc.SetTextColor(RGB(255, 255, 255));
dc.DrawText(str, rect, DT_EDITCONTROL | DT_WORDBREAK);//str为显示数据
//获取静态