C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 Как использовать SendMessage() вместо SendDlgItemMessage() / Сообщения / Система. Общее

Как использовать 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 будет перемещён до обработки сообщения, то дальний указатель на буфер будет неправильным.

 

 






Дебетовая карта Home Credit [CPS] RU