TODAY 671 / TOTAL
442771

분류
전체보기 (551)

나에
대해서 (187)

대해서 (14)

에쎄이 (38)

생각들 (107)

사진들 (7)

추억들 (12)

무언가를
접하다 (226)

장소 (44)

사람들 (34)

영화 & 만화 (19)

게임들 (18)

사물들 (111)

비밀♡ (0)

연구&개발
(71)

닷넷 (6)

MSNSocket (6)

Flex (1)

AllBlog (56)

블로그 (1)

공부하기
(18)

소프트웨어공학 (2)

소프트웨어실습3 (1)

컴퓨터 구조 (1)

운영체제(삭제) (1)

컴퓨터그래픽 (3)

인터넷자료처리 (2)

비쥬얼프로그래밍 (5)

프로그래밍구조론 (3)

태터툴즈
(26)

강좌 & 팁 (8)

스킨 - 제규어 (3)

스킨 - 핑크박스 (4)

스킨 - 파라다이스 (7)

기타
잡다 (23)

<<
2004
Mar   >>

S

M

T

W

T

F

S

29

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1

2

3

2005년
11월
2005년
10월
2005년
09월
2005년
08월
2005년
07월
2005년
06월
2005년
05월
2005년
04월
2005년
03월
2005년
02월
2005년
01월
2004년
12월
2004년
11월
2004년
10월
2004년
09월
2004년
08월
2004년
07월
2004년
06월
2004년
05월
2004년
04월
2004년
03월

이 아이템으로 2년전에
R&D할려..
03/07 -
아쉽다
아니요,,, 차라리 가만히 있는
..
03/03 -
key
하지만 이키보드 Apple
Macinto..
01/23 - 엥
저는 지난 학기때 시스템프로그..
01/21 -
잘나가는밍구
현재 삼정데이터서비스(주)에서..
12/26 -
comjunky
?
12/12 -
kjbioomnkga
클래스가등록이않됐다는데 뭐여..
12/12 -
kjbioomnkga
저기... 저도 맥OSX를 설치해
보..
11/19 -
pianoman2
한마디로 요약하면 어/불/성/설
11/18 -
노매너
잘가세요 T_T
11/11 -
하늘이맑은날

나도 동참이다~~ 다이나믹 코리..
비가 오는 거리
Dynamic Korea
present is
present
[023] Danamic Korea는
잊혀지는..
WONDERER
2nd
다이나믹 코리아
seRendipity
2006
[펌] 액정으로 만들어진 키보드..
소프트 스토리
Dynamic Korea 배너 달기
운동!
저 하늘의 별이
되어★
새롭게 바뀐 Dynamic Korea
배너
a flaming
youth
FLASH ?덉갔濡?/font>
DONGBUM on
blog
편안한 느낌, 남산 한옥마을
나무피리의 무지개빛
사과상자
약간의 업데이트..
IndiFairy's
Tales

HIGHMACS :: CafeAlpha
골빈해커 ::
말죽거리 잔혹사
김영임
:: life in mono
나미다 :: Tiny
Cafe
늑돌이 ::
lazion.com
사탕발가락 ::
달콤한상상
설세민 :: Ssemi's
Episode
순대국밥 :: Rock처럼 살고
Jaz..
신승호 ::
네오버닷컴
이주영 :: 울이
이쭈네 집+_+
이주영 :: 하늘이와 커플
홈피
이환 :: The Theme
카오루짱♥ :: Pathfind
With P..
人形使 ::
피리부는 사나이

in1983.com's Highlights!

스킨 다운로드 :
in1983.com
, 핑크박스,
파라다이스
0.95용
알콩달콩 별 스킨

한글 관련 메세지 정리

공부하기
- 비쥬얼프로그래밍 / 하늘이 [ 04/03/17 17:45 ]

한글 관련 메세지 정리
작 성 자 문병호(gosuck)  작성 시각
2001-07-22 오후 7:02:19
조 회 수 683

여기
와서 이것 저것 도움을 많이 받았습니다.

보답이 될 지 모르겠으나
제가 1년 이상 헤메면서
알게된 내용을 올림니다.
컴퓨터라는 꽤 괜찮은 기계를 미국 사람들이 영어를 기반으로 만들었다는
사실이
기분나쁘지만 할 수 없는 일이고 그것을 극복하여 좋은 프로그램을
만드는데 도움이 됐으면
좋겠습니다.

아래 내용은 VB에서 TextBox와 같은 각종 입력용 콘트롤의 메시지
후킹시
발생하는 한글 입력 관련 메세지에 대한 설명입니다.

터치스크린이나 타자연습기 제작,
그리드콘트롤에서 셀편집기 제작 시 한글 문제 해결에
도움이 될 수 있을 것입니다.

다음에
터치스크린 예제와 MSFlexGrid에서의 셀 직접편집 방법
그리고 한글 입력 중 눌린 키를 알아내는 방법
등을 소개하겠습니다.

한글 입력 관련 윈도우 메세지

상 수 값
WM_KEYDOWN
&H100
WM_KEYUP &H101
WM_CHAR
&H102
WM_IME_STARTCOMPOSITION
&H10D
WM_IME_COMPOSITION
&H10F
WM_IME_ENDCOMPOSITION
&H10E
WM_IME_SETCONTEXT &H281
WM_IME_NOTIFY
&H282
WM_IME_CONTROL
&H283
WM_IME_COMPOSITIONFULL &H284
WM_IME_SELECT
&H285
WM_IME_CHAR &H286
WM_IME_KEYDOWN
&H290
WM_IME_KEYUP &H291
WM_IME_REPORT
&H0280
WM_IME_REQUEST &H0288

각 상수의
의미
WM_KEYDOWN:
키가 눌릴 때 발생한다.
한글 입력 중에는 wParam에
229(콘트롤의 "KeyDown"이벤트와 같음)를,
lParam에 키코드와 다른 정보를 함께
반환한다.
lParam값을 API함수인 "MapVirtualKey"를 사용하여 한글 입력 중에 눌린 키를
알아낼 수 있다.
한글이 아닐 경우에는 wParam에 콘트롤의 "KeyDown"이벤트에서 반환하는
"KeyCode와 같은
값을 반환한다.(이 때도 lParam에 같은 값이
반환됨)

WM_KEYUP:
설명이 필요 없다. 콘트롤의 "KeyUp"이벤트와
같다.

WM_CHAR:
콘트롤의 "KeyPress"이벤트와 같으나 한글의 경우에는 한글의
첫바이트만 반환한다.

WM_IME_STARTCOMPOSITION :
한글을 처음 입력할 때
발생한다.
영문 입력 후 또는 수자 입력 후 한글 키를 누르면 단 한번만 발생한다.
예) "123"을
입력하다가 "ㄱ"을 누르면 발생(WM_IME_ENDCOMPOSITION 발생후 한글 입력시
발생)

WM_IME_COMPOSITION :
한글 입력 중에 발생한다(한글을 합성중인라는 의미
임)
WM_IME_STARTCOMPOSITION가 발생한 후 한글 키를 누를 때 마다
발생하며
wParam과 lParam에 부가적인 정보가 반환 된다.
wParam : 합성 중인 한글에
대한 ASCII Code가 반환된다.
lParam : 반환된 wParam가 합성중인 글자 인지 완성된
글자인지를 반환한다.
값 의미
&H6018 : 반환된 wParam가 합성중인
글자임
&H800 : 반환된 wParam가 완성된
글자임

WM_IME_ENDCOMPOSITION :
한글 입력을 종료할 때 발생한다.
한글
입력 중 한글키가 아닌 키를 누를 때(숫자키, Enter키, 한영 변환키, 방향키 등),
마우스로
클릭하거나, 포거스를 잃을 때 발생한다.(즉 한글 입력 중에는 검정 상자가
생기는 데 그 검정 상자가
없어질 때)

WM_IME_CHAR:
완성된 한글에 대한 ASCII값을
반환한다.
WM_IME_COMPOSITION 발생 후(lParam 값이 &H800일 때)
발생한다.
위에서 설명한 바와 같이 한글의 경우 WM_CHAR가 한글의 첫바이트만 반환하기
때문에
완성된 한글만을 알아내기 위해서는 이 메세지를 사용해야 한다.(실제로는
WM_IME_COMPOSITION
메세지를 사용하기 때문에 별로 사용하지
않음)

WM_IME_KEYDOWN:
한글 입력중 한글키가 아닌 키를 누를 경우 그 키값을
반환한다.
WM_IME_ENDCOMPOSITION메세지 발생 후에(한글 입력을
종료하고)발생한다.

그외의 메세지들은 본인도 내용을 충분히 모르고 있으며 실제로 사용할
필요도
없었다. 따라서 어렴풋이 내용을 이해는 하고 있으나 여기서 설명을 하지 않는다.

아래
내용은 TextBox를 후킹하여 한글을 입력할 때 발생하는 메세지와 반환 되는
wParam, lParam
값들이다. 중급이상의 실력이 있는 분이라면 충분히
이해할 수 있을 것이라
믿는다.

["가나다"를 입력하고 Enter를 쳤을 경우 발생하는 메세지]

메세지
wParam값 lParam값

입력대상이 포커스를 받았을 때:
WM_IME_SETCONTEXT
1 C000000F
WM_IME_NOTIFY 10 0
WM_IME_NOTIFY 11
0
WM_IME_NOTIFY 11 0

ㄱ:
WM_KEYDOWN 229
130001:
WM_IME_STARTCOMPOSITION 0 0
WM_IME_NOTIFY 11
0
WM_IME_COMPOSITION 42145(ㄱ) 6018: 합성중인 글씨임을
의미함
WM_KEYUP 82(R) C0130001

ㅏ:
WM_KEYDOWN 229
250001
WM_IME_NOTIFY 11 0
WM_IME_COMPOSITION 45217(가)
6018
WM_KEYUP 75(K) C0250001

ㄴ:
WM_KEYDOWN 229
1F0001
WM_IME_NOTIFY 11 0
WM_IME_COMPOSITION 45219(간)
6018
WM_KEYUP 83(S) C01F0001

ㅏ:
WM_KEYDOWN 229
250001
WM_IME_CHAR 45217(가) 1
WM_IME_COMPOSITION
45217(가) 800: 완성된 한글
WM_IME_COMPOSITION 45994(나) 6018: 합성중인
한글
WM_IME_NOTIFY 11 0
WM_CHAR 176 1 : wParam(176) : 한글의
첫 바이트
WM_IME_NOTIFY 11 0
WM_IME_COMPOSITION 45994(나)
6018
WM_KEYUP 75(K) C0250001

ㄷ:
WM_KEYDOWN 229
120001
WM_IME_NOTIFY 11 0
WM_IME_COMPOSITION 45998(낟)
6018
WM_KEYUP 69(E) C0120001

ㅏ:
WM_KEYDOWN 229
250001
WM_IME_CHAR 45994(나) 1
WM_IME_COMPOSITION
45994(나) 800
WM_IME_COMPOSITION 46297(다)
6018
WM_IME_NOTIFY 11 0
WM_CHAR 179 1
WM_IME_NOTIFY
11 0
WM_IME_COMPOSITION 46297(다) 6018
WM_KEYUP 75(K)
C0250001

Enter:
WM_KEYDOWN 229
1C0001
WM_IME_ENDCOMPOSITION 0 0
WM_IME_CHAR 46297(다)
1
WM_IME_COMPOSITION 46297(다) 800
WM_IME_KEYDOWN 13
1C0001
WM_IME_NOTIFY 11 0
WM_CHAR 180 1
WM_KEYDOWN 13
1C0001
WM_CHAR 13 1C0001
WM_KEYUP 13
C01C0001
WM_KEYUP 229 80000001
WM_IME_SETCONTEXT 0
C000000F

주소 :
http://php.chol.com/~ppk314/tt/rserver.php?mode=tb&sl=15
[복사하기]

이 댓글을
비밀 글로 등록합니다.

구글 AdSense - 하늘이에게 사랑을 나누어요;;;;