Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Как использовать SendMessage() вместо SendDlgItemMessage()

Далее описывается в каких случаях используется функция SendMessage(), а в каких SendDlgItemMessage().

Как SendMessage() так и SendDlgItemMessage() можно использовать для добавление строк в окно списка. SendMessage() используется для отправки сообщения указанному окну используя дескриптор окна списка. SendDlgItemMessage() используется для отправки сообщения дочернему окну данного окна используя идентификатор (ID) ресурса окна списка. SendDlgItemMessage() наиболее часто используется в функциями диалогового окна, которые имеют дескриптор диалога, а не элемента управления дочернего окна.

Вызов SendDlgItemMessage()

   SendDlgItemMessage (hwnd, id, msg, wParam, lParam) 

эквивалентен следующему вызову SendMessage():

   hwnd2 = GetDlgItem (hwnd, id);
    SendMessage (hwnd2, msg, wParam, lParam); 

Обратите внимание, что PostMessage() никогда не должна использоваться для общения с дочерними окнами диалогов по следующим причинам:

  1. Если сообщение не будет помещено в очередь сообщений элемента управления, то PostMessage() вернёт только ошибку. Так как многие сообщения возвращают элементу управления информацию, то PostMessage() не будет работать, так как она не возвращает информацию вызвавшему её.

  2. Только для 16-бит: Сообщения, такие как WM_SETTEXT которые включают дальний указатель (far pointer) на строку могут вызвать проблемы если постить при помощи функции PostMessage(). Дальний указатель может указывать на буфер, который находится внутри DS (data segment). PostMessage() не обрабатывает сообщения немедленно, а DS может быть перемещён. Поэтому, если DS будет перемещён до обработки сообщения, то дальний указатель на буфер будет неправильным.

 



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS