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

本文介绍如何在MFC中实现静态文本框的滚动显示效果,包括滚轮拖动、鼠标滚轮滚动,并确保滚动时每行文字高度一致,滚轮行数与文字行数对应。主要涉及滚轮消息处理、自绘静态文本框及DrawItem函数中的滚动行效果实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果:

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

//获取静态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值