«пользователи этой оболочки должны будут помнить, что не следует использовать этот конкретный номер» И почему они хотят это делать.Если вы, как автор компонентов, не предоставляете методы, а не позволяете своему пользователю напрямую обращаться к вашему элементу управления.
Это «неписанное» правило, которое вы, возможно, захотите узнать.WM_USER.Используйте это сообщение под вашим контролем.Предполагается, что вы пишете элемент управления и некоторые методы ВНУТРИ ВАШЕГО КОНТРОЛЯ должны изменить ваш элемент управления, возможно, вы захотите использовать WM_USER.
WM_APP.Если вашему приложению необходимо отправить сообщение ОБЪЕКТАМ ВНУТРИ ВАШЕЙ ЗАЯВКИ, вы можете использовать WM_APP.
RegisterWindowMessage Если у вас есть два (более одного) приложения, которым необходимо общаться друг с другом, вы должны ЗАПИСАТЬ СООБЩЕНИЕ 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 }