当窗口被MoveWindow时,为什么不能这样改变控件的大小和位置?该怎么解决
当窗口被MoveWindow时,为什么不能这样改变控件的大小和位置?
注:CChildWindow是由别的窗口的InitDialog里创建:
m_cw.Create(IDD_DIALOG1);
m_cw.MoveWindow(CRect(10, 10, 100, 100));
m_cw.ShowWindow(SW_SHOW);
void CChildWindow::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect rt, srt;
GetWindowRect(&rt);
rt.SetRect(rt.left+rt.Width()-20,
rt.top,
rt.right, rt.bottom);
ScreenToClient(&rt);
m_scrollBar.MoveWindow(rt); //运行会出错,说m_sc不是一个窗口。
}
------解决方案--------------------
试试(HWND)GetDlgItem(m_scrollBar的ID)-> MoveWindow(rt)
------解决方案--------------------
试试这样:
if(m_scrollBar.GetSafeHwnd())
m_scrollBar.MoveWindow(rt);
注:CChildWindow是由别的窗口的InitDialog里创建:
m_cw.Create(IDD_DIALOG1);
m_cw.MoveWindow(CRect(10, 10, 100, 100));
m_cw.ShowWindow(SW_SHOW);
void CChildWindow::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect rt, srt;
GetWindowRect(&rt);
rt.SetRect(rt.left+rt.Width()-20,
rt.top,
rt.right, rt.bottom);
ScreenToClient(&rt);
m_scrollBar.MoveWindow(rt); //运行会出错,说m_sc不是一个窗口。
}
------解决方案--------------------
试试(HWND)GetDlgItem(m_scrollBar的ID)-> MoveWindow(rt)
------解决方案--------------------
试试这样:
if(m_scrollBar.GetSafeHwnd())
m_scrollBar.MoveWindow(rt);