이 노트는 델파이에 대 한 올바른 것으로 추정 된다 6 그리고 델파이 7 마이크로소프트 윈도우에서 실행. 예를 들어, 양식이 위에서 정의한 메시지 중 하나를 자체적으로 보내는 경우: Windows 메시징은 프로세스가 쉽게 통신할 수 있는 방법입니다. 아래에서 이러한 메시지를 보내는 예제와 메시지를 수신하는 예제 메시지 처리기를 찾을 수 있습니다. 메시지는 Windows에서 응용 프로그램에 보낸 일부 발생에 대한 알림입니다. 예를 들어, 마우스 단추를 클릭하거나, 창 크기를 조정하거나, 키보드의 키를 누르면 Windows에서 발생한 일을 알리는 메시지를 응용 프로그램에 보냅니다. Delphi 애플리케이션 프로그래머는 VCL이 제공하는 이벤트가 대부분의 요구 사항에 적합하다는 것을 알게 될 것입니다. 가끔씩만 Win32 메시지 처리의 세계를 탐구해야 합니다. 그러나 Delphi 구성 요소 개발자는 많은 Windows 메시지를 직접 처리한 다음 해당 메시지에 해당하는 이벤트를 호출해야 하기 때문에 여러분과 메시지는 매우 좋은 친구가 될 것입니다. 메시지는 Windows에서 응용 프로그램에 전달된 레코드로 나타납니다. 이 레코드에는 발생한 이벤트 유형 및 메시지와 관련된 추가 정보와 같은 정보가 포함됩니다. 예를 들어 마우스 단추 클릭 메시지의 메시지 레코드에는 단추를 누를 때의 마우스 좌표가 포함됩니다.

Windows에서 응용 프로그램으로 전달되는 레코드 형식은 다음 코드와 같이 Windows 장치에 정의된 TMsg라고 합니다. 예를 들어: Delphi를 사용하면 Windows 메시지 큐에 게시된 다음 응용 프로그램에서 사용자 지정 처리기로 처리할 수 있는 경우 고유한 메시지를 정의할 수 있습니다. 이 참고 사항은 Microsoft Windows 플랫폼에서 실행되는 델파이에 적용됩니다. 델파이에서 Windows 메시지를 처리하는 것은 간단하기 때문에 보낼 데이터로 채워진 WM_CopyData와 함께 SendMessage API 호출을 발급하는 것은 매우 간단합니다. 또한 클래스 이름과 창 제목 텍스트를 모두 사용할 필요는 없으며, 하나는 충분합니다. 그러나 여러 복사본이 열려 있는 경우 찾은 복사본이 처음 으로 이동합니다. 위의 코드에서 “수신기” 응용 프로그램은 기본 양식(“TReceiverMainForm”)의 클래스 이름과 창의 캡션(“ReceiverMainForm”)을 전달하여 FindWindow API 호출을 사용하여 발견되었습니다. .

WM_USER 아래의 범위에서 비동기 메시지 기능(PostMessage, SendNotifyMessage 및 SendMessageCallback)에 메시지를 보내는 경우 해당 메시지 매개 변수에는 포인터가 포함될 수 없습니다. 그렇지 않으면 작업이 실패합니다. 수신 스레드가 메시지를 처리하기 전에 함수가 반환되고 보낸 사람은 메모리를 사용하기 전에 해제합니다.