通用标尺控件






4.89/5 (18投票s)
这是一个通用尺子控件的应用演示。它包含2个应用程序和ActiveX控件本身。包含控件代码。
引言
在之前的文章中没有包含源代码,受到一些人的强烈要求后,现在我提供了。这里有源代码,以及你们所有程序员想要的东西。示例没有可执行文件,因此需要编译源代码。VC++6.0 会自动注册控件。以下是接口列表和描述,以及它们的使用方法。尺子本身由一个 CWnd
派生类 CScale
组成。实现代码大约有2000行,所以我不会在这里解释任何内容。函数名称相当直观,所以你应该能够轻松地理解它们。
void SetRulerInfo(short nLowerLimit,short nUpperLimit, short nScalingFactor,BOOL bHorz,BOOL b3DLook,BOOL AutoResize);
我认为唯一需要解释的方法是这个。如你所见,其余的只是getter和setter方法,除了消息发送者(我稍后会提到)。此方法用于在运行时以原子操作设置尺子的属性。参数说明如下:
short nLowerLimit
顾名思义,设置刻度的下限(水平尺子的左侧/垂直尺子的顶部)。下限是客户端坐标中的像素位置。
short nUpperLimit
这是下限的对应项。
short nScalingFactor
缩放因子决定了绘制主刻度和次刻度的间隔。在示例中,使用了5。请参阅演示以了解说明。
BOOL bHorz
TRUE
创建水平尺子(默认值)。FALSE
创建垂直尺子。
BOOL b3DLook
TRUE
表示使用3D边框(默认值)。FALSE
表示使用平面边框。请参阅演示。
BOOL bAutoResize
此功能允许在运行时调整尺子的刻度,而无需调用setter方法。启用后,尺子侧面会出现调整句柄。这些只是上述属性的setter和getter方法。
void SetLowerLimit(short nLowerLimit); void SetUpperLimit(short nUpperLimit); void SetScalingFactor(short nScalingFactor); void SetLook(BOOL bLook3D); void SetAlignment(BOOL bHorz); void SetAutoResize(BOOL bAutoResize); short GetLowerLimit(); short GetUpperLimit(); short GetScalingFactor(); BOOL IsHorzAligned(); BOOL Has3DBorders();
鼠标事件触发器
void StartTracking(short nFlag, OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY);
void StopTracking(short nFlags, OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY);
void Track(short nFlags, OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY);
以上事件分别由鼠标按下、鼠标释放和鼠标移动事件触发。nX
和 nY
是屏幕坐标中的点,在使用之前应转换为客户端坐标。nFlag
用于指示正在使用的刻度尺,0 表示常规箭头移动,1 表示左侧栏,2 表示右侧栏。请参阅演示以了解说明。