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

Ваш аккаунт

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

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

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

WM_NCHITTEST: return HTCAPTION и PtInRegion()

508
16 апреля 2008 года
verelex
46 / / 07.11.2006
Xочу перетаскивать окно за любую точку, для этого:
Код:
case WM_NCHITTEST:
return HTCAPTION;
break;

но перестает работать PtInRegion()
Код:
case WM_NCLBUTTONUP: // or WM_NCRBUTTONUP
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
for (int i=0; i<iRegionsCount; i++)
{
if (PtInRegion(hRgns,xPos,yPos))
{
iActiveRgn = i;
continue;
}
}
break;

Как поправить?
342
22 апреля 2008 года
Yos
209 / / 21.06.2003
1. преобразовать экранные координаты в оконные не пробовали, и что это вообще за регионы и к чему относятся...

2. если вы сразу возвращаете HTCAPTION то никаких сообщений с WM_NC...... больше приходить не будет...
1.9K
22 апреля 2008 года
andriano
474 / / 10.01.2008
Вариант для Делфи, но, думаю, понятно, что делать: в обработчике сообщения WM_MouseDown послать сообщение WM_SysCommand с wp= 0xf012.

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012; { a magic number }
begin
ReleaseCapture;
panel1.perform(WM_SysCommand, SC_DragMove, 0);
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог