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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите пожалуйста что такое wParam & lParam 
:(
    Опции темы
D7_beginner
  Дата 14.12.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дорогие мастера своего дела. Я начинающий программист. Помогите пожалуйста разобратся с дополнительными парметрами wParam и lParam. Когда надо их использовать? 
PM MAIL   Вверх
Snowy
Дата 14.12.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Читай справку по конкретному сообщению.
Для каждого сообщения расписано, что туда нужно передавать/принимать.
Для разных сообщений играют разную роль.
PM MAIL   Вверх
Rennigth
Дата 14.12.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Цитата(D7_beginner @  14.12.2007,  15:36 Найти цитируемый пост)
Дорогие мастера своего дела. Я начинающий программист. Помогите пожалуйста разобратся с дополнительными парметрами wParam и lParam. Когда надо их использовать?  

дык для какой ф-ии? SendMessage?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
MetalFan
Дата 14.12.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



дополнительными параметрами чего?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
THandle
Дата 14.12.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Rennigth, мне кажется что имелось ввиду, что такое вообщем wparam и lparam.
PM   Вверх
Poseidon
Дата 14.12.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(DRKB)
Потребности программиста на Delphi практически полностью удовлетворяются возможностями работы с событиями, предоставляемыми VCL. Но при создании серьёзных нестандартных приложений и особенно при разработке компонентов Delphi вам, безусловно потребуется непосредственно обрабатывать сообщения Windows, после чего генерировать события, соответствующие этим сообщениям. Что же такое сообщение? Сообщение - это извещение о некотором имевшем место событии, посылаемое системой Windows в адрес приложения. Любые действия пользователя - щелчок мышью, изменение размеров окна приложения, нажатие клавиши на клавиатуре - вынуждают Windows отправить приложению сообщение, извещающее о том, что же произошло в системе.

wParam и lParam - это параметры этих самых сообщений, которые, по сути, и несут в себе информацию.

Добавлено через 3 минуты и 46 секунд
К примеру, при нажатии клавиши отправляется сообщение WM_KeyDown. При этом в wParam передается код нажатой клавиши


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
BLACK_KOT
Дата 21.4.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а как работать с верхними и нижними словами этих параметров к примеру как установить для окна цвет фона и шрифта? там используются lparamhi lparamlo если не ошибаюсь?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
CodeMonkey
Дата 21.4.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Цитата(BLACK_KOT @  21.4.2010,  15:46 Найти цитируемый пост)
а как работать с верхними и нижними словами этих параметров к примеру как установить для окна цвет фона и шрифта?

Например, логическими операциями:
wParamHi := wParam shr 16;
wParamLo := wParam and $FFFF;
wParam := (wParamHi shl 16) or wParamLo.

Или распаковщиками сообщений:
Код
    procedure WMMouse(var Msg: TWMMouse); message WM_MOUSEMOVE;
    procedure WMMyMsg(var Msg: TMessage); message WM_MyMsg;
  end;

....

procedure TForm65.WMMouse(var Msg: TWMMouse);
begin
  Msg.XPos
end;

procedure TForm65.WMMyMsg(var Msg: TMessage);
begin
  Msg.WParamLo или Msg.WParam
end;



--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Демо
Дата 21.4.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

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



CodeMonkey, 
+ LoWord и HiWord


--------------------
    
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 22.4.2010, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Цитата(Демо @  21.4.2010,  18:01 Найти цитируемый пост)
CodeMonkey, 
+ LoWord и HiWord 

Хотел написать, но в дефолтном проекте LoWord нету, поэтому не пошёл дальше.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
VladmirVB
Дата 15.5.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Каждое сообщение Windows содержит два параметра: wParam и lParam. Префиксы w и l означают "Word" и "Long", т.е. первый параметр 16-разрядный, а второй – 32-разрядный. Однако так было только в старых, 16-разрядных версиях Windows. В 32-разрядных версиях оба параметра 32-разрядные, несмотря на названия. Конкретный смысл каждого параметра зависит от сообщения. В некоторых сообщениях один или оба параметра могут вообще не использоваться, в других – наоборот, двух параметров даже не хватает. В этом случае один из параметров (обычно lParam) содержит указатель на дополнительные данные.
PM MAIL   Вверх
BLACK_KOT
Дата 2.6.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



немного конкретней:

цитата из DRKB3_Full:

Сообщение: wm_CtlColor Дает pодительскому окну или дочеpнему оpгану упpавления возможность изменить цвета фона и текста, котоpыми наpисован дочеpний элемент.
 
Паpаметpы:
wParam: Является описателем контекста дисплея для дочеpнего окна. lParamLo: Является описателем дочеpнего окна. lParamHi: Является одной из констант ctlcolor_. Опpеделяет тип дочеpнего окна. См. pаздел "Флаги упpавления цветом (ctlcolor_) в главе 1. Возвpащаемое значение: Не используется. Комментаpии: Стандаpтным действием, выполняемым в функции DefWindowProc, является использование стандаpтных системных цветов.

я пишу:
Код

//--------------обработка сообщений для кнопки
function Button2Proc(hWnd: HWND; Msg: UINT;wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var dc:HDC;
begin
  case msg of
  WM_LBUTTONUP: begin SendMessage(label1,WM_SETFONT, GetStockObject(16), 1); 
              dc:=GetDC(label1);
              SendMessage(label1, wm_CtlColor,dc,MakeLong(label1,CTLCOLOR_STATIC));
              ReleaseDC(label1,dc);
               end;


  end;
Result := CallWindowProc(Pointer(GetWindowLong(hWnd, GWL_USERDATA)),hWnd, Msg, wParam, lParam);
end;

шрифт меняется нормально, хотя хотелось бы узнать как задавать конкретный шрифт: ариал допустим или джорджия.
а вот ни цвет фона, ни цвет текста окна не меняется. подскажите что не так. 



--------------------
                       .. я - демо версия Бога от Microsoft..
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.1218 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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