《Windows程序设计》之鼠标滚轮

代码是书中的SYSTEM.C一部分。

直接上代码:

	case WM_CREATE:
		hdc=GetDC(hwnd);
		GetTextMetrics(hdc,&tm);
		cxChar=tm.tmAveCharWidth;
		cxCaps=(tm.tmPitchAndFamily & 1? 3:2)*cxChar/2;
		cyChar=tm.tmHeight+tm.tmExternalLeading;
		ReleaseDC(hwnd,hdc);

		iMaxWidth=40*cxChar+22*cxCaps;
		//这个地方需要注意一下,这里没有return 0,一开始怎么都没调试出来,最后才发现的这个问题。
		//没有return 0,这样才会直接调用WM_SETTINGCHANGE,不然是不会调用的。
	case WM_SETTINGCHANGE:
		SystemParametersInfo(SPI_GETWHEELSCROLLLINES,0,&ulScrollLines,0);
		if(ulScrollLines)
			//这里iDeltaPerLine是在根据控制面板中的设置而计算而来的。我电脑上是40
			iDeltaPerLine=WHEEL_DELTA/ulScrollLines;
		else
			iDeltaPerLine=0;
		return 0;
	case WM_MOUSEWHEEL:
		if(iDeltaPerLine==0)
			break;
		//一开始下面的wParam被我写成了lParam,无论怎么操作滚轮,屏幕都没有变化。
		//但是跟踪却显示调用了SendMessage,但是为什么没有变化,于是我做了一个测试。
		//用鼠标拖动滚动条放到中间,再滚动滚轮,这次就出来效果了,但是无论怎么滚动,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值