> Не могу придумать случая когда необходимо использовать RegisterWindowMessage(). > По-моему ВСЕГДА можно обойтись WM_USER+d. (...) [От: sandrey_ ] > > (...) RegisterWindowMessage является единственной альтернативой в таком случае. [От: Alex Fedotov модератор ] > > (...) Т.е. приходим к выводу, что RegisterWindowMessage — это наше все. [От: Flamer rsdn ]
А я вот тоже НЕ МОГУ ПРИДУМАТЬ СЛУЧАЯ, КОГДА НЕОБХОДИМО ИСПОЛЬЗОВАТЬ RegisterWindowMessage :-)
(Причем в случае RegisterClass — после закрытия общавшихся прог ID сообщения в диапазоне C000-FFFF не сохраняется.
Кстати, этот вариант можно осуществить прямо в WinMain, совмещая строки ClassName и MyUniqueMessage).
>> Не могу придумать случая когда необходимо использовать RegisterWindowMessage(). >> По-моему ВСЕГДА можно обойтись WM_USER+d. (...) [От: sandrey_ ] >> >> (...) RegisterWindowMessage является единственной альтернативой в таком случае. [От: Alex Fedotov модератор ] >> >> (...) Т.е. приходим к выводу, что RegisterWindowMessage — это наше все. [От: Flamer rsdn ]
K>А я вот тоже НЕ МОГУ ПРИДУМАТЬ СЛУЧАЯ, КОГДА НЕОБХОДИМО ИСПОЛЬЗОВАТЬ RegisterWindowMessage
Cпасибо за ответ. Cходил по предложенному указателю, и нашел там вот что:
>> И как же отловить сообщение TaskbarCreate? > > Зарегетрировать это сообщение вот таким макаром > const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated")); > и обрабатывать его > Ed.ward
Простите, — это пример чего ?
Начать с того, что данное сообщение уже зарегистрировано системой,
и таким макаром система просто возвращает его идентификатор.
Но об том и речь, что можно получить его и другими макарами (см. выше)...
что юзер (не система) может регистрировать свои сообщения не единственным способом...
K>(Причем в случае RegisterClass — после закрытия общавшихся прог ID сообщения в диапазоне C000-FFFF не сохраняется. K>Кстати, этот вариант можно осуществить прямо в WinMain, совмещая строки ClassName и MyUniqueMessage).
Возможно, все они работают через GlobalAddAtom (см. MSDN).
2 Кодёнок
>> (Причем в случае RegisterClass — после закрытия общавшихся прог ID сообщения в диапазоне C000-FFFF не сохраняется. >> Кстати, этот вариант можно осуществить прямо в WinMain, совмещая строки ClassName и MyUniqueMessage). > > Возможно, все они работают через GlobalAddAtom (см. MSDN).
Да нет, явно иной механизм: если заглянуть в получаемый через GetClipboardFormatName текущий список строк
с идентификаторами в диапазоне C000-FFFF, то увидим там сообщения, имена форматов, имена классов окон
запущенных приложений... а вот строк, связанных с глобальными атомами, что-то не видать.
Но вопрос в другом:
возможна ли такая ситуация, когда не сработает замена RegisterWindowMessage на RegisterClipboardFormat ?
Или же RegisterWindowMessage — по сути избыточное API ?
K>Но вопрос в другом: K>возможна ли такая ситуация, когда не сработает замена RegisterWindowMessage на RegisterClipboardFormat ? K>Или же RegisterWindowMessage — по сути избыточное API ?
Это вопрос к Microsoft. В этой версии избыточно, в другой могут разделить. Могут наоборот ввести дополнительные (общие) API, через которые эти функции будут работать.
Может и вправду оказаться, что это следствие какого-нибудь неудачного решения, и все участвовавшие в этом программисты MS будут уверены, что разделения никогда не сделают
>> Но вопрос в другом: >> возможна ли такая ситуация, когда не сработает замена RegisterWindowMessage на RegisterClipboardFormat ? >> Или же RegisterWindowMessage — по сути избыточное API ? > > Это вопрос к Microsoft. В этой версии избыточно, в другой могут разделить. > Могут наоборот ввести дополнительные (общие) API, через которые эти функции будут работать. > Может и вправду оказаться, что это следствие какого-нибудь неудачного решения, и все участвовавшие > в этом программисты MS будут уверены, что разделения никогда не сделают
Ну, я не такой невозмутимый индеец. Меня, наоборот, очень даже поразило, что сплошь и рядом используемые
RegisterWindowMessage, RegisterClipboardFormat, RegisterClass(Ex) вот уже 10 лет таят такой сюрприз.
Кстати, если взаимозаменяемость RegisterWindowMessage и RegisterClipboardFormat действительно смахивает
на программерский просчет, то в варианте с RegisterClass(Ex) — не отражается ли некий механизм посылки
сообщений классам окон ?
, 2002 год):
> Re: RegisterWindowMessage >> Интересно, как спай получает информацию из мессаги, зарегистрированной сабжем? >> В смысле, когда поставишь галочку "Registered", он ведь зараза выводит строку, которая задавалась при регистрации сообщения. > > AFAIR, GetClipboardFormatName выдает имя зарегистрированного сообщения по идентификатору. Попробуй. -- Alex Fedotov