C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[19163] Re:Re:Re:Re:Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면....
꼴(이성렬) [kkol] 917 읽음    2002-06-07 13:45
김상훈 님이 쓰신 글 :
: 꼴님...꼴님 방법으로 하니깐..문자는 제가 원하는데로 찍힙니다..근데..del키과 backspace키를 사용안하게 할려고 하니깐.안 됩니다.그래서 제가 아래와 같이 코딩을 하엿는데..이렇게 하니깐..되거든요...근데 키다운 이벤트랑 키프레스 이벤트는 이벤트의 차이는있지만..코딩의 방법은 똑같은 결과를 가져올거라고 생각이 되는데..왜 결과가 다른지..리플 부탁 드립니다...

-----------------------------------------------

윈도우에서 키보드가 눌려졌을때 먼저 발생하는 메시지는
WM_KEY_DOWN로 빌더의 OnKeyDown이벤트입니다.

이 메시지가 TranslateMessage에 의해 처리되어서 발생하는 메시지가
WM_CHAR 인데.. 이것이 빌더의 OnKeyPress 이벤트죠.

따라서 키보드를 누르게 되면 두개의 이벤트가 차례대로 발생합니다.

차이점은 KeyDown에서의 Key는 버추얼키 코드를 가지고
KeyPress에서 Key값은 아스키 값을 가지고 있기때문에
캡스락이 꺼진 상태에 쉬프트를 누르고 A를 누르게 되면 다음과 같은순서로 이벤트가 발생합니다.

1.쉬프트 누를때 KeyDown
2. A누를때 KeyDown
3. 대문자 'A'대한 KeyPress

그러니까 TEdit콤포넌트는 쉬프트 상태에따라 대소문자가 자동으로 바뀌기때문에
KeyPress이벤트에서 문자를 입력 받는것이고
그것을 제어하기 위해서는 KeyPress이벤트에서 처리해야 하는것이죠.

참고로 KeyDown은 마우스 버튼을 눌렀을때도 발생합니다.
이벤트함수에서 TShiftState Shift를 확인해 보면 마우스 버튼이 눌렸는지 알수 있죠.

이해가 되셨나요? 
그럼 즐건하루 되시길. ^^


+ -

관련 글 리스트
19154 마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 김상훈 751 2002/06/07
19157     Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 꼴(이성렬) 855 2002/06/07
19159         Re:Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 김상훈 779 2002/06/07
19160             Re:Re:Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 꼴(이성렬) 756 2002/06/07
19161                 Re:Re:Re:Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 김상훈 866 2002/06/07
19163                     Re:Re:Re:Re:Re:마스크에디터에서 원하지 않는 문자를 안 찍히게 할려면.... 꼴(이성렬) 917 2002/06/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.