在Timer中让Button控件一段时间调用一次MoveWindow;
BOOL CmfctestDlg::OnInitDialog()
{
SetTimer(0, 1000, nullptr);
return TRUE; // return TRUE unless you set the focus to a control
}
void CmfctestDlg::OnTimer(UINT_PTR nIDEvent)
{
// Get control size.
CRect rt;
GetDlgItem(IDC_BUTTON1)->GetClientRect(rt);
static int y = 0;
GetDlgItem(IDC_BUTTON1)->MoveWindow(0, ++y, rt.Width(), rt.Height());
CDialogEx::OnTimer(nIDEvent);
}
在主窗体的OnMouseMove中打印鼠标位置及调用次数;
void CmfctestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
static int i = 0;
TRACE(_T("OnMouseMove, %d, %d, %d\n"), point.x, point.y, ++i);
CDialogEx::OnMouseMove(nFlags, point);
}
将MoveWindow换成GetDlgItem(IDC_BUTTON1)->SetWindowPos(nullptr, 0, ++y, rt.Width(), rt.Height(), SWP_NOACTIVATE);也不行。