Перемещение диалога
Но тем не менее мне нужно двигать его по экрану
с помощю мыши.
Я попытался сделать так :
void CwintestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
RECT rect;
int x,y;
if((nFlags & MK_LBUTTON)==MK_LBUTTON)
{
x=point.x-m_lPoint.x;
y=point.y-m_lPoint.y;
this->GetWindowRect(&rect);
rect.left+=x;
rect.top+=y;
rect.right+=x;
rect.bottom+=y;
this->MoveWindow(&rect);
m_lPoint=point;
}
CDialog::OnMouseMove(nFlags, point);
}
void CwintestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
m_lPoint=0;
CDialog::OnLButtonUp(nFlags, point);
}
void CwintestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_lPoint=point;
CDialog::OnLButtonDown(nFlags, point);
}
Диалог конечно двигается но при этом
очень дёргается и курсор съезжает с него.
У важаемые знатоки вопрос :)
Можно ли это сделать както по другому
чтоб он нормально двигался.
Цитата:
void CwintestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
RECT rect;
int x,y;
if((nFlags & MK_LBUTTON)==MK_LBUTTON)
{
x=point.x-m_lPoint.x;
y=point.y-m_lPoint.y;
this->GetWindowRect(&rect);
rect.left+=x;
rect.top+=y;
rect.right+=x;
rect.bottom+=y;
this->MoveWindow(&rect);
[COLOR=red]//m_lPoint=point;[/COLOR]
}
CDialog::OnMouseMove(nFlags, point);
}
И CDialog::OnMouseMove(nFlags, point);
здесь не обязательно.
::SetWindowPos(m_hWnd,0,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
вместо MoveWindow, побыстрее будет.
GetWindowRect, конечно, можно в LBUTTONDOWN отправить...(хотя это, похоже, не очень влияет)
Цитата:
Originally posted by craftyfox
еще, пожалуй
::SetWindowPos(m_hWnd,0,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
вместо MoveWindow, побыстрее будет.
GetWindowRect, конечно, можно в LBUTTONDOWN отправить...(хотя это, похоже, не очень влияет)
еще, пожалуй
::SetWindowPos(m_hWnd,0,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
вместо MoveWindow, побыстрее будет.
GetWindowRect, конечно, можно в LBUTTONDOWN отправить...(хотя это, похоже, не очень влияет)
Спасибо craftyfox ты мне здорово помог.
Правда я не очень понял что ты имееш в
виду на счот GetWindowRect.