Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Разница между сообщениями CN и WM в Delphi

Delphi , ОС и Железо , Справочник по сообщениям

В процессе работы с Delphi нередко можно встретить declarations сообщений от Windows API, подобные CN_NOTIFY и WM_NOTIFY. Вопрос, который часто задают разработчики, заключается в том, какая разница между этими сообщениями и когда их следует использовать.

Сообщения с префиксом WM (Window Message) используются в Win32 API и в коде конечного пользователя. В свою очередь, сообщения с префиксами CM (Control Message) и CN (Control Notification) используются внутри VCL (Visual Component Library) - это библиотека визуальных компонентов, входящая в состав Delphi.

Когда VCL обрабатывает определенные уведомления WM, такие как WM_COMMAND и WM_NOTIFY, которые отправляются от дочернего контрола к родительскому окну, VCL отражает их как сообщения CN (CN_COMMAND и CN_NOTIFY) обратно к тому контролу, который их отправил. Это позволяет VCL контролам обрабатывать свои собственные уведомления.

Например, рассмотрим обработку сообщения WM_NOTIFY в Delphi:

procedure TForm1.WMNotify(var Msg: TWMNotify);
begin
  if (Msg.NMHdr.code = NM\_CUSTOMDRAW) and (Msg.NMCD.dwDrawStage = NM\_CUSTOMDRAW\_PREPAINT) then
  begin
    // Обработка уведомления WM\_NOTIFY
  end;
end;

В данном примере мы обрабатываем уведомление WM_NOTIFY, которое отправляется от дочернего контрола к родительскому окну (в данном случае, форме). Если код уведомления равен NM_CUSTOMDRAW и этап рисования равен NM_CUSTOMDRAW_PREPAINT, тогда мы обрабатываем уведомление.

В заключение, сообщения WM используются в Win32 API и в коде конечного пользователя, а сообщения CM и CN используются внутри VCL. Понимание разницы между ними поможет разработчикам более эффективно работать с Delphi и обрабатывать уведомления от контролов.

Создано по материалам из источника по ссылке.

В Delphi при работе с Windows API встречаются типы сообщений CN\_NOTIFY и WM\_NOTIFY, и разработчики часто спрашивают, чем они отличаются и когда их нужно использовать.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Справочник по сообщениям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:47:14/0.0029809474945068/0