返回首页



简介
实施分配器窗格内的统治者 - 2,是基于的工作。本文提供annbsp的,例如在MDI和SDI应用程序的执行情况。
我已经改变了创建标尺,添加显示/隐藏标尺和格式化代码的某些部分的功能​​。实施MDI的方式包括"Ruler.hquot;CChildFrame类:公众的CMDIChildWnd{ ... ... 私人:CRulerSplitterWnd m_Rulers; / /标尺对象 60; 市民:无效ShowRulers(布尔bShow); / /切换标尺 &# 160; 无效UpdateRulersInfo(stRULER_INFO stRulerInfo); / /更新的统治者 ... ...};/ /创建标尺
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs & #160; CCreateContext * pContext){ (!m_Rulers.CreateRulers(这一点,pContext)){ TRACE("创造的统治者的错误\ nquot;); 返回的CMDIChildWnd::OnCreateClient(lpcs,pContext); } 返回TRUE;/ /切换标尺无效CChildFrame::ShowRulers(BOOL bShow){  ;
m_Rulers.ShowRulers(bShow);}/ /更新的统治者
无效CChildFrame:UpdateRulersInfo(stRULER_INFO stRulerInfo){  60; m_Rulers.UpdateRulersInfo(stRulerInfo);}SDI的方式包括"Ruler.hquot;类CMainFrame:CFrameWnd的公共{ ....
所有,其余的MDI执行相同。互动

(在这种情况下CScrollView)在您看来,赶上GT; / /更新鼠标位置的标尺上的OnMouseMove,OnVScroll和OnHScroll消息与统治者互动无效CDemoView:的OnMouseMove(UINT nFlags,口岸系统点){ UpdateRulersInfo(RW_POSITION,GetScrollPosition(),点); ... ... / /垂直滚动范围的标尺和位置更新 无效CDemoView:OnVScroll(UINT nSBCode,UINT的非营利组织, &# 160; CScrollBar * pScrollBar) { UpdateRulersInfo(RW_VSCROLL,GetScrollPosition()); ... ...  ; / /更新的水平滚动范围的标尺和位置 无效CDemoView:OnHScroll(UINT nSBCode UINT的非营利组织,CScrollBar * pScrollBar) {  0; UpdateRulersInfo(RW_HSCROLL,GetScrollPosition());
和finallyvoid CDemoView:UpdateRulersInfo(INT n消息,ScrollPos连接点,连接点POS){ stRULER_INFO pRulerInfo; pRulerInfo.uMessage = n消息; & #160; pRulerInfo.ScrollPos = ScrollPos; pRulerInfo.Pos =名次; pRulerInfo.DocSize = m_ImageSize; pRulerInfo.fZoomFactor = m_fZoomFactor; / / CMainFrame中的SDI ((CMainFrame中*)GetParentFrame())- GT; UpdateRulersInfo(pRulerInfo); / /在MDI CChildFrame ((CChildFrame *)GetParentFrame())- GT; UpdateRulersInfo(pRulerInfo);}
任何方式,看看在演示!
这就是它!
享受!

回答

评论会员:RedFraggle 时间:2011/11/29
MSDN中,我发现这个:

为了同一个系统颜色刷油漆,应用程序应该使用GetSysColorBrush而不是CreateSolidBrush(参数nIndex)(GetSysColor(参数nIndex)),因为GetSysColorBrush返回缓存的分配一个新的刷代替。

有两个地方,CreateSolidBrush ruler.cpp称为,只是寻找他们

我看了这个的原因是,我在某处不知何故资源泄漏。打开/关闭了大量的Windows后,我得到了错误信息,告诉我有没有提供更多的资源。上述变化解决这个问题。

BTW:感谢在这里发布您的代码

上周六,2009年6月13日,日下午03:28
修改
评论会员:wp51_cn 时间:2011/11/29
我看到你的代码。但我不知道如何使用它在anthoer地图模式。
评论会员:kellyonlyone 时间:2011/11/29
!很好的工作,感谢
如果这个标尺可以在视图的滚动中,它将会更凉爽!
凯利

-------------------------------------------------- ------------------------{ BR}对于高品质的流量/图MFC / C的Visio一样可视化源代码,下载XD:
http://www.ucancode.net
- 5:43 2006年3月13日(星期一)
修改
评论会员:尚武精神 时间:2011/11/29
如果我显示一个对话框的规则我能做些什么
如果我需要随时随地移动图片我可以做什么?
如果我需要显示的x坐标和y坐标,我能做些什么呢?

评论会员:smjones 时间:2011/11/29
您需要在Photoshop中,whoes统治者只是涂在相同的看法,这就是为什么你的行动是如此缓慢

只需使用鼠标左键单击滚动条的按钮,你可以观察到,这显然

最好的问候
评论会员:弥敦道勇 时间:2011/11/29
我做了一个搜索代码项目上的任何尚武精神写的文章。你知道,它来到了空。哼哼。

制造软件开发
惠普公司
评论会员:基思布素 时间:2011/11/29
。HI

任何人都知道如何添加一个拆分窗口内的统治者?

我的情况是:
1。 SDI的
2。查看区域分割成窗格中的0,0和0,1窗格
3。窗格0,0用作窗体视图
4。 0,1窗格作为CSrollView用于显示图片
5。我需要添加窗格0,1统治者

请帮助。感谢

最好的问候,
弥敦道

评论会员:islobell 时间:2011/11/29
从演示应用程序,选择缩小。请注意,统治者不重绘他们在新的状态。

在CRulerView:FIX:UpdateRulersInfo(),检查m_fZoomFactor改变。如果是这样,调用invalidate()

无效CRulerView:UpdateRulersInfo(stRULER_INFO stRulerInfo)
{
- ; BOOL requiresRefresh = FALSE;

(m_fZoomFactor = stRulerInfo.fZoomFactor!)
- ; {
- ; m_fZoomFactor = stRulerInfo.fZoomFactor - ; requiresRefresh = TRUE; - ; }

- ; m_DocSize = stRulerInfo.DocSize;
- ; m_scrollPos = stRulerInfo.ScrollPos;

(stRulerInfo.uMessage == RW_POSITION){
- ; DrawCursorPos(stRulerInfo.Pos)
- ; }
- ; 否则,如果((m_rulerType == RT_HORIZONTAL)(stRulerInfo.uMessage == RW_HSCROLL)| |
- ; - ; (m_rulerType == RT_VERTICAL)(stRulerInfo.uMessage == RW_VSCROLL)){
CDC * PDC的GetDC();
- ; 的OnDraw(PDC)
- ; ReleaseDC(PDC)
- ; }
- ; ELSE - ; requiresRefresh = TRUE;
- ;如果(requiresRefresh)
- ; 的Invalidate();
}
 0;

- ; keithb
评论会员:xxxyyyzzz 时间:2011/11/29
你能送我一个MDI应用程序与多视角分配器的例子吗?
评论会员:xuell00 时间:2011/11/29
。差不多两年的等待后,我们很高兴发现有人终于完成代码
然而,似乎速度太慢。