Страница 1 из 2
lParam и wParam
Добавлено: 20 июн 2007, 11:59
Лена89
Здравствуйте!
Учу Visual C++. Читала книги, но не могу толком понять для чего нужны в некоторых ф-ях lParam и wParam? В чем их суть и что вместо них вставляется (например, вместо int можно поставить целое чисо)? Может, кто объяснит попроще?
Re: lParam и wParam
Добавлено: 20 июн 2007, 13:05
WinMain
Обычно функции SendMessage(), PostMessage() и др. используют данные параметры. Содержимое WPARAM и LPARAM зависят от каждого конкретного оконного сообщения. Смотри в MSDN информацию по оконным функциям и сообщениям.
Re: lParam и wParam
Добавлено: 20 июн 2007, 14:09
Absurd
Читала книги, но не могу толком понять для чего нужны в некоторых ф-ях lParam и wParam?
Превед из 16-битной Win 3.11.
lParam - 32 - битовый парaметр (long в 16 битовой среде это 32 бита), wParam - word param, word это 16 бит. Сейчас понятия "WORD" и "DWORD" устарели.
Ныне оба типа - это 32 или 64 битовые целые в зависимости от ОС - Win32 или Win64.
Нести эти два параметра могут все что угодно: координаты мыши, код нажатой клавиши на клавиатуре, или указатель на интерфейс/функцию.
Re: lParam и wParam
Добавлено: 22 июн 2007, 11:45
Лена89
Спасибо, вам!
А здесь, чем их можно заменить?
Код: Выделить всё
case WM_CTLCOLOR:{
if((HWND)lParam == hEdit)
SetTextColor((HDC)wParam, RGB(255 ,0 ,0));
Re: lParam и wParam
Добавлено: 22 июн 2007, 13:15
Absurd
Не понял вопрос. Если сообщение - WM_CTLCOLOR, то действительно wParam - Это Handle to Display Context, а lParam - это HWND контрола. Что вам нужно заменить?
Re: lParam и wParam
Добавлено: 22 июн 2007, 18:13
Absurd
Хотя нет, вру.
MSDN:
Remarks
The WM_CTLCOLOR message has been replaced by more specific notifications in 32-bit versions of Windows. These replacements include the following:
WM_CTLCOLORBTN
WM_CTLCOLOREDIT
WM_CTLCOLORDLG
WM_CTLCOLORLISTBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC
Re: lParam и wParam
Добавлено: 24 июн 2007, 19:33
Лена89
Нет, я имела ввиду вместо: (HWND)lParam, (HDC)wParam и hEdit.
Re: lParam и wParam
Добавлено: 27 июн 2007, 16:17
Лена89
Что примерно...вообще там может быть?
Re: lParam и wParam
Добавлено: 27 июн 2007, 16:39
BBB
Лена89 писал(а):Что примерно...вообще там может быть?
Все, что угодно. Зависит от конкретного Windows-сообщения:
WinMain писал(а):Обычно функции SendMessage(), PostMessage() и др. используют данные параметры. Содержимое WPARAM и LPARAM зависят от каждого конкретного оконного сообщения. Смотри в MSDN информацию по оконным функциям и сообщениям.
Absurd писал(а):Нести эти два параметра могут все что угодно: координаты мыши, код нажатой клавиши на клавиатуре, или указатель на интерфейс/функцию.
Обычно, в описании того или иного Windows-сообщения (иденцифицируемого константой вида WM_xxxxxxxx) указывается, используются ли для ДАННОГО сообщения wParam и lParam и какая информация (опять же - для ДАННОГО сообщения) в них находится.
Re: lParam и wParam
Добавлено: 27 июн 2007, 16:44
Romeo
Лена, ты издеваешься? Тебе же сказали, что значение этих параметров зависит от мессэйджа. Они не статичны!
Например для WM_SIZE wParam хранит тип ресайза, а lParam - новую ширину и высоту в младшем и, соответственно, старшем словах.
Для того же WM_PAINT - эти параметры не используются.
Какой смысл имеет wParam и lParam для конкретного сообщения можно прочесть в MDSN.