Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиентские координаты, Координаты окна, относительно родит. 
:(
    Опции темы
sjvov
Дата 10.2.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.1.2006

Репутация: нет
Всего: нет



Вот такая проблема: Нужно найти клиентские координаты окна. Вроде бы ни чего сложного, но не получается...
Делал так:

Код

Function myGetClientCoord(hWindow:Hwnd):Trect;
var WinRect,WinRectGlob:Trect;
    hParent,hParentTest:Hwnd;
begin
   hParent:=hWindow;
   hParent := GetAncestor(hParent,GA_PARENT);
   
   //Глобальные координаты род окна
   GetWindowRect(hParent, WinRect);
   //Глобальные координаты дочернего окна
   GetWindowRect(hWindow, WinRectGlob);   

   // Должны получиться клиентские
   Result.Left:=WinRectGlob.Left-WinRect.Left;
   Result.Top:=WinRectGlob.Top-WinRect.Top;
   Result.Right:=WinRect.Right-WinRectGlob.Right;
   Result.Bottom := WinRect.Bottom-WinRectGlob.Bottom;
end;


Такое ощущение, как будто считается бордер, а он не должен считаться.... или что нить другое.

Это сообщение отредактировал(а) sjvov - 10.2.2006, 10:25
PM MAIL   Вверх
Romikgy
Дата 10.2.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



ScreenToClient
не?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sjvov
Дата 14.2.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.1.2006

Репутация: нет
Всего: нет



Спасибо. Получилось

Код

Function myGetClientCoord(hWindow:Hwnd):Trect;
var WinRect,WinRectGlob:Trect;
    hParent:Hwnd;
    ClientPoint:TPoint;
begin
   hParent:=hWindow;
   
   //Глобальные координаты
   GetWindowRect(hWindow, WinRectGlob);
   
   //Получаем хэндл родителя
   hParent := GetAncestor(hParent,GA_PARENT);
   
   //Указываем, какие координаты хотим преобразовать
   ClientPoint.X:= WinRectGlob.Left;
   ClientPoint.Y:= WinRectGlob.Top;
   
   //Преобразуем координаты нашего окна, относительно родительского
   ScreenToClient(hParent, ClientPoint);
   
   //Находим ширину и высоту окна
   GetClientRect(hWindow,WinRect);

   //Возвращаем результат
   Result.Left   := ClientPoint.X;
   Result.Top    := ClientPoint.Y;
   Result.Right  := ClientPoint.X + WinRect.Right;
   Result.Bottom := ClientPoint.Y + WinRect.Bottom;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.