0

我有一个嵌入 Scintilla 文本编辑控件的 MFC 应用程序。我想自定义 Scintilla 控件以在垂直滚动条旁边显示一些自定义控件。本质上,我想在下面的橙色区域渲染一些控件,其中绿色区域代表滚动条:

期望的客户区

我尝试覆盖 Scintilla 窗口的 WM_NCCALCSIZE 消息并从客户矩形的右侧减去偏移量。这是代码:

void CScintillaCtrl::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
    CWnd::OnNcCalcSize(bCalcValidRects, lpncsp);
    lpncsp->rgrc[0].right -= 100;
}

但是,这会导致垂直和水平滚动条重新定位以适应较小的客户端宽度,如下所示:

从客户端偏移量的滚动条偏移量

我不确定这种行为是由 Scintilla 还是 Windows 引起的。有没有办法可以调整客户区并保留滚动条的位置?

4

1 回答 1

0

我找到了一个 Scintilla 特定的解决方案。我可以使用该SCI_SETMARGINRIGHT命令在客户区域的右侧添加一个边距,然后在其中渲染我的控件。

于 2013-07-31T18:06:30.263 回答