我有一个父窗口和一个子窗口,类似于:
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对这两个功能所说的内容:
但是我找不到任何与此问题有关的内容,所以我猜这里可能还有其他一些我不知道的东西。
谢谢。
答案 0 :(得分:2)
您没有将剪辑矩形(参数lpClipRect
)传递给ScrollWindow()
。来自reference:
如果lpClipRect为NULL,则不对滚动执行剪裁 矩形。
这就是你获得溢出的原因。
你可以这样解决:
CRect rc;
m_cChildDlg.GetClientRect(rc);
m_cChildDlg.ScrollWindow(xAmount, yAmount, nullptr, rc);