메세지 구분자는 정수형의 상수이다.
1024($0400) 이하의 영역은 위도우에서 사용되는 영역이다.
그래서 WM_USER 를 정의해 놓고 1 이상의 값을 더해 새로 정의해 사용하게 된다.
const
WM_USER = $0400;
그러나 이 경우에도 VCL 컨트롤의 메세지와 중복되는 경우가 있는데 다음이 이에 해당한다.
{ Edit Control Notification Codes }
const
EN_ERRSPACE = $0500;
EN_MAXTEXT = $0501;
EN_HSCROLL = $0601;
EN_VSCROLL = $0602;
사용되는 컨트롤을 파악하여 중복되는 메세지를 잘 피해야 할 것이다.
이 외에 WM_APP 를 이용하는 방법도 있지만, 이 또한 여러 Third-Party 컴포넌트와 섞이거나 내 것을 남이 쓰게 만들 경우 충돌 무결을 보장할 수 없다.
const
WM_APP = $8000;
RegisterWindowMessage 함수를 사용하면 문자열을 통해 프로그램에서 자동으로 윈도우 메세지를 등록해주면 더 깔끔할 듯 싶다.
Delphi>
function RegisterWindowMessage(lpString: PChar): UINT; stdcall;
C/C++>
UINT RegisterWindowMessage(
LPCTSTR lpString // address of message string
);
Exam>
var
WM_TEST: UINT;
begin
WM_TEST := RegisterWindowMessage('Test Message');
end;
'Windows > RAD Studio' 카테고리의 다른 글
[DEL] Splash 없이 실행 (0) | 2008.02.13 |
---|---|
[DEL, CB] 도움말에서 CLX 제거하기 (0) | 2008.02.12 |
덧셈을 이용한 제곱 구하기 (Delphi) (0) | 2008.01.05 |
사업자등록번호 검증 (C++) (0) | 2008.01.05 |
주민등록번호 검증 (Delphi) (0) | 2008.01.02 |