在SDI应用程序中创建垂直和水平标尺栏的最佳方法是什么?你会把它作为框架或视图的一部分吗?从CControlBar中获取它,还是有更好的方法?
垂直标尺也必须停靠在窗格而不是框架上。
为了让我更清楚一点,我想象一下Visual Studio中对话框编辑器中的垂直标尺(仅限MFC)。每当调整树视图大小时,它都会重新定位。
答案 0 :(得分:1)
我 不 使用控制栏。我没有其他充分的理由(IMOHO)很难做到你想做的事 - 如果你想要的东西除了对接工具栏之外。
我只是使用GDI调用直接在View窗口上绘制它们。
我想我可能想到让每个标尺成为自己的窗口,并在自己的窗口上绘制标尺。然后我会在视图中创建这两个CWnd派生类,并将其定位为子窗口。如果你想在这些标尺上与鼠标交互(更容易理清统治者的信息),这是很好的。
答案 1 :(得分: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)));