在 MFC 中创建标尺条

Creating a ruler bar in MFC

本文关键字:创建 MFC      更新时间:2023-10-16

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

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

为了更清楚地了解我所追求的内容,请想象Visual Studio(仅限MFC)中对话框编辑器中的垂直标尺。每当调整树视图的大小时,它都会重新定位。

不会使用控制栏。我没有充分的理由,那么(恕我直言)很难做你想做的事情 - 如果你想要的,而不是停靠工具栏。

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

我想我可能会考虑让每个标尺成为自己的窗口,并在自己的窗口上绘制标尺。然后,我将在视图中创建这两个 CWnd 派生类,并将位置作为子窗口。如果您想在这些标尺上与鼠标进行交互,这很好(更容易理清标尺的消息)。

我最终按照您的建议从 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)));