Windows messaging

DanHamm used Ask the Experts™
I have a single windows application where I pass messages between different modules using the standard SendMessage and PostMessage.  This all works

When passing a string, I use the code:

    copyDataStruct.dwData := 1;
    copyDataStruct.cbData := 1 + Length(AString);
    copyDataStruct.lpData := PChar(AString);

    SendMessage(Application.MainFormHandle, WM_PLG_COPYDATA, ATarget, Integer(@copyDataStruct));

where WM_PLG_COPYDATA is a messaging constant private to my own application, which is received by a message function of the form
    procedure WMCopyData(var Msg : TWMCopyData); message WM_PLG_COPYDATA;

This also works, although all of the examples I have seen (copying between applications) use the standard procedure WMCopyData(var Msg : TWMCopyData); message WM_COPYDATA;

My question is: is there any reason why I should stick to the standard WM_COPYDATA rather than a private constant?  I have done a check for memory leaks, and everything seems OK
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
No, you can use your own constant.

I do however recommend that you use the function RegisterWindowMessage() to obtain your constant.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial