Конференция "Прочее" » WM_USER +100 vs WM_USER +400
 
  • Германн © (17.09.08 03:56) [0]
    Не ну. А всё таки какие идентификаторы сообщений стоит пользовать в программах? И когда и почему?
  • Городской Шаман (17.09.08 04:46) [1]
    Использовать стоит получаемые с помощью RegisterWindowMessage.
  • KilkennyCat © (17.09.08 04:54) [2]

    > И когда

    Когда необходимо

    >  и почему?

    Потому что необходимо
    :)
  • antonn © (17.09.08 08:57) [3]

    > Германн ©   (17.09.08 03:56)
    >
    > Не ну. А всё таки какие идентификаторы сообщений стоит пользовать
    > в программах? И когда и почему?

    "нужно написать программу" (с)

    PS извините :)
  • Игорь Шевченко © (17.09.08 09:07) [4]

    > А всё таки какие идентификаторы сообщений стоит пользовать
    > в программах? И когда и почему?


    А без разницы, лишь бы не пересекаться с другими желающими.
  • Григорьев Антон © (17.09.08 09:08) [5]
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=169#08

    Только там не написано про +100 и +400. Я уже видел здесь упоминания о том, что это теперь надо обязательно добавлять к WM_USER, но подтверждения в доках пока не нашёл. Если кто-то ткнёт носом в ссылку, буду весьма признателен.
  • Поросенок Винни-Пух © (17.09.08 09:17) [6]
    я меньше тысячи не использую
  • clickmaker © (17.09.08 11:07) [7]
    WM_USER - 0x7FFF для своих оконных классов
    WM_APP - 0xBFFF для приложений
  • jack128_ (17.09.08 11:21) [8]

    > что это теперь надо обязательно добавлять к WM_USER, но
    > подтверждения в доках пока не нашёл. Если кто-то ткнёт носом
    > в ссылку, буду весьма признателен.

    ссылку не дам, но где то читал, что сообщения из диапазона WM_USER..WM_USER + 100 используются какими то стандартными классами из comctrls.dll
  • Григорьев Антон © (17.09.08 11:37) [9]

    > jack128_   (17.09.08 11:21) [8]
    > ссылку не дам, но где то читал, что сообщения из диапазона
    > WM_USER..WM_USER + 100 используются какими то стандартными
    > классами из comctrls.dll


    Ну, используются, ну и что? И за пределами этого диапазона тоже используются, причём не только comctrls.dll, но и стандартными оконными классами. Например, EN_HSCROLL=WM_USER+$201, EN_VSCROL=WM_USER+$202. Просто диапазон WM_USER..WM_APP зарезервирован для классовых сообщений, программист, который делает такое сообщение, обязан следить за тем, чтобы оно посылалось только окнам того класса, для которого предназначено. В этом случае абсолютная уникальность номеров сообщений не требуется, два разных сообщения, предназначенных для разных оконных классов, вполне могут иметь одинаковый номер. Всё это в MSDN хорошо описано.
  • jack128_ (17.09.08 13:29) [10]
    const
     WM_MYMSG = WM_USER + 1;
    TMyListView = class(TListView)
    private
     procedure WMMyMsg(var Message: TMessage); message WM_MYMSG; // возможны проблемы
    end;

    понятно, что тут програмимст сам себе злобный буратина, но проще всегда писать WM_USER + 100 (или + 400) и не забивать себе голову такими вещами
  • Германн © (17.09.08 14:43) [11]

    > Просто диапазон WM_USER..WM_APP зарезервирован для классовых
    > сообщений, программист, который делает такое сообщение,
    > обязан следить за тем, чтобы оно посылалось только окнам
    > того класса, для которого предназначено.

    Ага. Спасибо Антон.
 
Конференция "Прочее" » WM_USER +100 vs WM_USER +400
Есть новые Нет новых   [134442   +13][b:0][p:0]