我有一个父窗口和一个子窗口,类似于:
class CChildDlg : public CDialog
{
...
}
class CParentDlg : public CDialog
{
CChildDlg m_cChildDlg;
...
}
在父窗口的 OnInitDialog
函数中,我创建了子窗口:
m_cChildDlg.CreateEx(0,
WC_STATIC,
NULL,
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|SS_NOTIFY,
{0,0,width,height},
this,
0);
我可以使用m_cChildDlg.ScrollWindow(xAmount, yAmount)
轻松滚动子窗口。
问题是我在子窗口正上方的父窗口中有一些其他控件(工具栏等),当向上滚动时子窗口“覆盖”这些控件。
我尝试调用 SetWindowPos
来将子窗口设置在其他控件后面,但这似乎没有任何区别。
MSDN 上对这两个函数是这么说的:
但是我还没有找到与这个问题相关的任何内容,所以我猜测我可能还遗漏了其他东西。
谢谢。
最佳答案
您没有将剪辑矩形(参数lpClipRect
)传递给ScrollWindow()
。来自 reference :
If lpClipRect is NULL, no clipping is performed on the scroll rectangle.
这就是为什么你会溢出。
你可以这样修复它:
CRect rc;
m_cChildDlg.GetClientRect(rc);
m_cChildDlg.ScrollWindow(xAmount, yAmount, nullptr, rc);
关于winapi - 将子窗口 "overflows"滚动到父窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44072111/