程序说明: 原作者Stefan Ungureanu。代码大小:5k。 环境:VC 6下面是翻译的作者的说明:许多显示图片或文档的程序中在一个视的两边都有刻度标尺,用来显示在一页中的位置。实现起来是比较困难的,因为必须在一个view中留出标尺的位置(在CScrollView继承类中更加困难)。另一个困难的地方是,它们是固定在切分窗口中的(不能调整大小)。下面的例子告诉你怎样解决这个难题。代码代码实现了标尺切分窗口,在view中使用的标尺可以在ruler.h和ruler.cpp文件中找到,下面介绍如何使用:在框架窗口中(CFrameWnd或CMDIChildWnd的继承类) // class definition class CMainFrame : public CFrameWnd { [...] protected: DECLARE_FX_RULER(CMainFrame)下一步是创建切分窗口和视。下面的代码适用于SDI程序,在CMainFrame类的OnCreateClient中,加入下面的代码创建右切分窗口 // class definition IMPLEMENT_FX_RULER_SPLITTER(, , 0, 1, pContext->m_pNewViewClass);下一步你要做消息的发放,使得标尺知道滚动位置的改变和缩放的改变。 // class definition GetDocument()->UpdateAllViews(this, VW_VSCROLL, (CObject*)(GetScrollPosition().y));可能用到的类型VW_HSCROLL View is scrolled horizontally VW_VSCROLL View is scrolled vertically VW_HPOSITION Cursor position changed on the x axis VW_VPOSITION Cursor position changed on the y axis
环境:VC 6下面是翻译的作者的说明:许多显示图片或文档的程序中在一个视的两边都有刻度标尺,用来显示在一页中的位置。实现起来是比较困难的,因为必须在一个view中留出标尺的位置(在CScrollView继承类中更加困难)。另一个困难的地方是,它们是固定在切分窗口中的(不能调整大小)。下面的例子告诉你怎样解决这个难题。代码代码实现了标尺切分窗口,在view中使用的标尺可以在ruler.h和ruler.cpp文件中找到,下面介绍如何使用:在框架窗口中(CFrameWnd或CMDIChildWnd的继承类)
// class definition
class CMainFrame : public CFrameWnd
{
[...]
protected:
DECLARE_FX_RULER(CMainFrame)下一步是创建切分窗口和视。下面的代码适用于SDI程序,在CMainFrame类的OnCreateClient中,加入下面的代码创建右切分窗口
// class definition
IMPLEMENT_FX_RULER_SPLITTER(, , 0, 1, pContext->m_pNewViewClass);下一步你要做消息的发放,使得标尺知道滚动位置的改变和缩放的改变。
// class definition
GetDocument()->UpdateAllViews(this, VW_VSCROLL, (CObject*)(GetScrollPosition().y));可能用到的类型VW_HSCROLL View is scrolled horizontally
VW_VSCROLL View is scrolled vertically
VW_HPOSITION Cursor position changed on the x axis
VW_VPOSITION Cursor position changed on the y axis