MFC开发之静态文本框实现编辑框滚动显示文字效果

效果:

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为显示数据

//获取静态文本框当前显示文字的行数和每行高度

CR

你可能感兴趣的:(MFC(PC端))