«Пользователи этой обертки должны помнить, что не следует использовать этот номер» И для чего они хотят это сделать. Если вы не являетесь разработчиком компонента, предоставляйте методы, а не позволяйте своему пользователю напрямую обращаться к вашему контролю.
Это «неписаное» правило, которое вы, возможно, захотите узнать. WM_USER. Используйте это сообщение внутри себя. Предполагается, что вы пишете элемент управления и некоторые методы. ВНУТРИ ВАШИХ КОНТРОЛЬОВ необходимо изменить свой контроль, вы можете использовать WM_USER.
WM_APP. Если ваше приложение должно отправить сообщение OBJECTS INSIDE YOU APPLICATION, вы можете использовать WM_APP.
РегистрацияWindowMessage Если у вас есть два (более одного) приложения, которые должны связываться друг с другом, вы должны ЗАРЕГИСТРИРОВАТЬ СООБЩЕНИЕ WINDOWS с RegisterWindowMessage.
Примеры. В этом примере используется Delphi
{ WM_USER }
procedure TYourControl.RefreshColor;
begin
SendMessage(Self.Handle,WM_USER+YourNumber,wParam,lParam);
{ Pay attention to Self.Handle, use WM_USER within YOUR CONTROL }
end;
{ WM_APP }
procedure CheckValue;
var
IResult: Integer;
begin
IResult:=SendMessage(OtherForm.Handle,WM_APP+YourConstant,wParam,lParam);
{ Watch OtherForm.Handle }
end;
{ RegisterWindowMessage }
procedure SendCommand(OtherAppHandle: Integer);
var
MessageNumber: Integer;
MessageName: ShortString;
begin
MessageName:='YourMessageName';
Inc(MessageName[0]);MessageName[Ord(MessageName[0])]:=#0;
MessageNumber:=RegisterWindowMessage(@MessageName[1]);
SendMessage(OtherAppHandle,MessageNumber,wParam,lParam);
end;
{ Hope this will help }
Если вы беспокоитесь об этом, один из вариантов заключается в использовании зарегистрированных сообщений Windows, которые гарантированно уникальны для разных строк. http://msdn.microsoft.com/en-us/library/ms644947(v=vs.85).aspx – 2010-12-16 13:33:34