65.9K
CodeProject 正在变化。 阅读更多。
Home

通用标尺控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (18投票s)

2002年5月10日

CPOL

2分钟阅读

viewsIcon

81948

downloadIcon

3600

这是一个通用尺子控件的应用演示。它包含2个应用程序和ActiveX控件本身。包含控件代码。

Sample Image - ruler_control.jpg

引言

在之前的文章中没有包含源代码,受到一些人的强烈要求后,现在我提供了。这里有源代码,以及你们所有程序员想要的东西。示例没有可执行文件,因此需要编译源代码。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);

以上事件分别由鼠标按下、鼠标释放和鼠标移动事件触发。nXnY 是屏幕坐标中的点,在使用之前应转换为客户端坐标。nFlag 用于指示正在使用的刻度尺,0 表示常规箭头移动,1 表示左侧栏,2 表示右侧栏。请参阅演示以了解说明。

© . All rights reserved.