2008-10-03 362 views
1

在SDI应用程序中创建垂直和水平标尺栏的最佳方式是什么?你会把它作为框架或视图的一部分吗?从CControlBar派生它,还是有更好的方法?在MFC中创建标尺栏

垂直标尺还必须停靠到窗格而不是框架。

为了让它更清晰一些,可以想象一下Visual Studio中对话框编辑器中的垂直标尺(仅适用于MFC)。无论何时调整树视图的大小,它都会重新定位。

+0

您不是已经问过这个了吗?也许删除其中一个问题? – Aardvark 2008-10-03 16:12:43

回答

1

我会不是使用控制条。我没有什么好的理由(IMOHO)很难做到你想做的 - 如果你想要的东西,如果不是一个对接工具栏。

我只是使用GDI调用直接在视图窗口上绘制它们。

我想我可能考虑使每个标尺自己的窗口,并绘制在他们自己的窗口上的统治者。然后,我将在视图中创建这两个CWnd派生类并将其作为子窗口。如果你想在这些标尺上与鼠标进行交互(这很容易理解标尺的消息),这很好。

0

我最终根据你的建议从CWnd中派生出了标尺并跳过了控制条路线。此代码适用于以下任一情况:

m_wndSplitter.CreateStatic(this, 1, 3); 

m_wndLeftPane.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 0)); 
m_ruler.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 1)); 

m_wndSplitter.CreateView(0, 2, pContext->m_pNewViewClass, CSize(300, 0), pContext); 
SetActiveView((CScrollView*)m_wndSplitter.GetDlgItem(m_wndSplitter.IdFromRowCol(0, 2)));