Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2009, 15:36   #1
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию Позиция окна, по Handle.

Всем привет.

Код:
  Windows.GetClientRect(hWnd,rct);
  GetCurrentPositionEx(GetDC(hWnd),@posit);
попробовал этими двумя способами получить позицию по handle,
у меня выдает позиция 0,0 вероятно сам относительно себя.
Как получить Позицию относительно дисплея?
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 13.10.2009, 15:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var W:TWindowPlacement;
begin
 ZeroMemory(@W,SizeOf(W));
 W.length:=SizeOf(W);
 GetWindowPlacement(Form1.Handle,@W);
 ShowMessage('По запросу координаты '+IntToStr(W.rcNormalPosition.Left)+' , '+IntToStr(W.rcNormalPosition.Top)+#10#13+'По данным формы коодинаты '+IntToStr(Form1.Left)+' , '+IntToStr(Form1.Top)+'.');
end;
вот как я сделал
результаты одинаковые значит все верно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.10.2009, 16:40   #3
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Как насчет того, чтобы просто вызвать GetWindowRect ?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 13.10.2009 в 16:45.
Goodwin98 вне форума Ответить с цитированием
Старый 13.10.2009, 16:52   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Я у себя в проекте делал так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  r:trect;
begin
if getforegroundwindow<>0 then
begin
   getwindowrect(getforegroundwindow,r);
   label1.Caption:='Handle: '+inttostr(getforegroundwindow)+'; Left: '+inttostr(r.Left)+'; Top: '+inttostr(r.Top);
end;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 13.10.2009, 17:18   #5
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

windows.GetWindowRect действительно лучше оказался в моём случае.
Пепел Феникса GetWindowPlacement возвратил мне относительные координаты.

russian-stalker,Goodwin98 спасибо.

Я тащу координаты swf-окна из firefox GetWindowPlacement - возвращает относительные.
Don't worry be happy
Izhic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена курсора у окна с известным handle Oburec Win Api 3 10.07.2009 06:23
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47
позиция всплывающего окна wall66 HTML и CSS 2 30.01.2009 15:05
Как получить handle главного окна, зная имя приложения? Altera Win Api 8 22.12.2008 18:52
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48