Jak zdefiniować prywatne wiadomości aplikacji?

Używałem prywatnych wiadomości w mojej aplikacji na ten rok:

UM_APP_BASE = WM_APP; // WM_APP is declared as WM_APP = $8000; in "Controls" unit.

a następnie zdefiniowałem moje prywatne wiadomości:

UM_EXPLORER_MSG = UM_APP_BASE + 1;
UM_LICENSE_CHANGE_MSG = UM_APP_BASE + 2;
etc...

I używaj ich w ten sposób w mojej klasie:

procedure UMLicenseChanged(var Message: TMessage); message UM_LICENSE_CHANGE_MSG;

(Ja też używamRegisterWindowMessage „rozmawiać” z innymi aplikacjami, ale to inna historia)

Nie pamiętam, co skłoniło mnie do użyciaWM_APP zamiastWM_USER jako podstawa w pierwszej kolejności.
Dokumenty mówią:

Stała WM_USER służy do rozróżniania wartości komunikatów zarezerwowanych do użycia przez system Windows i wartości, które mogą być używane przez aplikację do wysyłania wiadomości w prywatnej klasie okna. Istnieje pięć zakresów numerów wiadomości:

Range   Meaning
0 through WM_USER - 1   Messages reserved for use by Windows.
WM_USER through 0x7FFF  Integer messages for use by private window classes.
0x8000 through 0xBFFF   Messages reserved for future use by Windows.
0xC000 through 0xFFFF   String messages for use by applications.
Greater than 0xFFFF Reserved by Windows for future use.

Co oznacza żeWM_APP jest „zarezerwowany dla przyszłego użytku przez Windows”. Z drugiej strony Delphi używaCM_BASE = $B000; który jest w tym zakresie. i równieżCN_BASE = $BC00;

Jak zdefiniować wiadomość podstawową, aby nie kolidowała z innymi komunikatami używanymi zarówno przez kontrolki Windows / Delphi / Inne? Która wiadomość podstawowa jest preferowana jako prywatna dla mojej aplikacji? i dlaczego?
Powinienem użyćWM_USER zamiastWM_APP? Zauważ, żeWM_USER baza jest używana w CommCtrl przez Windows, np. np.TB_ENABLEBUTTON = WM_USER + 1. itp...

Potrzebuję pewnych informacji na ten temat.

Przeczytałem to na moim API pomocy Delphi (D5). co jest oczywiście przestarzałe!
Prawdopodobnie dlatego zdecydowałem się użyćWM_APP.
Mimo to wyjaśnienie różnicy między nimi byłoby miłe :)

questionAnswers(1)

yourAnswerToTheQuestion