VC如何获取加有滚动条的客户区的全部宽度??以及鼠标的消息的坐标??

2025-04-07 01:09:31
推荐回答(1个)
回答1:

首先,客户区指的就是窗口中可进行绘图的一个方格,照楼主的意思把未显示内容也算在内,这说的是整个设备坐标系,对于设备坐标系是没有大小可言的,它可以认为是一个两条互相垂直的直线所在的平面,它是无限大的。而无论滚动条怎么滚动,设备坐标的0,0点总是位于客户区的左上角。这其中的原理还牵涉到逻辑坐标。详情见http://baike.baidu.com/view/3126326.htm
对于鼠标坐标,当有鼠标消息传递到消息处理程序时,LOWORD(lParam)为x坐标,HIWORD(lParam)为y坐标,此时为设备坐标。没有鼠标消息传递时可以调用GetCursorPos(LPPOlNT IpPoint)函数获取鼠标坐标,此时的坐标是屏幕坐标如果需要转化成设备坐标可以调用ScreenToClient(HWND hWnd, LPPOINT lpPoint);