Здравствуйте!
Учу Visual C++. Читала книги, но не могу толком понять для чего нужны в некоторых ф-ях lParam и wParam? В чем их суть и что вместо них вставляется (например, вместо int можно поставить целое чисо)? Может, кто объяснит попроще?
lParam и wParam
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Обычно функции SendMessage(), PostMessage() и др. используют данные параметры. Содержимое WPARAM и LPARAM зависят от каждого конкретного оконного сообщения. Смотри в MSDN информацию по оконным функциям и сообщениям.
-
- Сообщения: 1213
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Превед из 16-битной Win 3.11.Читала книги, но не могу толком понять для чего нужны в некоторых ф-ях lParam и wParam?
lParam - 32 - битовый парaметр (long в 16 битовой среде это 32 бита), wParam - word param, word это 16 бит. Сейчас понятия "WORD" и "DWORD" устарели.
Ныне оба типа - это 32 или 64 битовые целые в зависимости от ОС - Win32 или Win64.
Нести эти два параметра могут все что угодно: координаты мыши, код нажатой клавиши на клавиатуре, или указатель на интерфейс/функцию.
2B OR NOT(2B) = FF
Спасибо, вам!
А здесь, чем их можно заменить?
А здесь, чем их можно заменить?
Код: Выделить всё
case WM_CTLCOLOR:{
if((HWND)lParam == hEdit)
SetTextColor((HDC)wParam, RGB(255 ,0 ,0));
-
- Сообщения: 1213
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Хотя нет, вру.
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
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
2B OR NOT(2B) = FF
Нет, я имела ввиду вместо: (HWND)lParam, (HDC)wParam и hEdit.
Что примерно...вообще там может быть?
Все, что угодно. Зависит от конкретного Windows-сообщения:Лена89 писал(а):Что примерно...вообще там может быть?
WinMain писал(а):Обычно функции SendMessage(), PostMessage() и др. используют данные параметры. Содержимое WPARAM и LPARAM зависят от каждого конкретного оконного сообщения. Смотри в MSDN информацию по оконным функциям и сообщениям.
Обычно, в описании того или иного Windows-сообщения (иденцифицируемого константой вида WM_xxxxxxxx) указывается, используются ли для ДАННОГО сообщения wParam и lParam и какая информация (опять же - для ДАННОГО сообщения) в них находится.Absurd писал(а):Нести эти два параметра могут все что угодно: координаты мыши, код нажатой клавиши на клавиатуре, или указатель на интерфейс/функцию.
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Лена, ты издеваешься? Тебе же сказали, что значение этих параметров зависит от мессэйджа. Они не статичны!
Например для WM_SIZE wParam хранит тип ресайза, а lParam - новую ширину и высоту в младшем и, соответственно, старшем словах.
Для того же WM_PAINT - эти параметры не используются.
Какой смысл имеет wParam и lParam для конкретного сообщения можно прочесть в MDSN.
Например для WM_SIZE wParam хранит тип ресайза, а lParam - новую ширину и высоту в младшем и, соответственно, старшем словах.
Для того же WM_PAINT - эти параметры не используются.
Какой смысл имеет wParam и lParam для конкретного сообщения можно прочесть в MDSN.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.