Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перемещение диалога

1.2K
02 сентября 2004 года
BigBug
93 / / 30.07.2004
Есть диалог без верхней синей полоски.
Но тем не менее мне нужно двигать его по экрану
с помощю мыши.

Я попытался сделать так :

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);
}

Диалог конечно двигается но при этом
очень дёргается и курсор съезжает с него.
У важаемые знатоки вопрос :)
Можно ли это сделать както по другому
чтоб он нормально двигался.
430
03 сентября 2004 года
craftyfox
157 / / 20.02.2000
Цитата:

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);
здесь не обязательно.

430
03 сентября 2004 года
craftyfox
157 / / 20.02.2000
еще, пожалуй
::SetWindowPos(m_hWnd,0,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
вместо MoveWindow, побыстрее будет.

GetWindowRect, конечно, можно в LBUTTONDOWN отправить...(хотя это, похоже, не очень влияет)
1.2K
03 сентября 2004 года
BigBug
93 / / 30.07.2004
Цитата:
Originally posted by craftyfox
еще, пожалуй
::SetWindowPos(m_hWnd,0,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOZORDER);
вместо MoveWindow, побыстрее будет.

GetWindowRect, конечно, можно в LBUTTONDOWN отправить...(хотя это, похоже, не очень влияет)



Спасибо craftyfox ты мне здорово помог.
Правда я не очень понял что ты имееш в
виду на счот GetWindowRect.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог