Skip to content
디케2009.12.16 06:56

WM_CHAR
 
wParam
WM_CHAR 메시지는 입력된 문자의 코드를 wParam 으로 전달하며 wParam 의 값을 읽어 사용자가 어떤 문자키를 눌렀는지 알 수 있다. 메시지의 추가 정보는 받고자하는 타입에 맞게 적당히 캐스팅해야 한다.
( TCHAR )wParam;
 
lParam
키의 눌림/놓음 상태, 메시지가 보내지기 전 키의 상태, Alt 키, 오른쪽 Alt, Ctrl 키, 반복 카운트 등의 정보
 
 
 
WM_KEYDOWN
 
wParam
WM_KEYDOWN 메시지는 키보드를 누를 때마다 윈도우로 전달되는데 문자가 아닌 모든 키에 대해서도 발생한다. 단, Alt 키와 윈도우 키, 한영 전환키 등의 특수 키 몇 가지는 제외된다. 이때 wParam 으로는 문자 코드가 아닌 가상 키코드라는 것이 전달된다. 숫자 및 영문자의 가상 키코드는 아스키 코드와 같으며 매크로 상수는 정의되어 있지 않으므로 문자 상수와 wParam 을 바로 비교하면 된다. 단, 영문자의 경우는 대문자 코드와 일치되어 있으므로 반드시 대문자와 비교해야 한다.
if( wParam == 'Z' )
 
lParam
WM_CHAR 메시지와 동일하나 잘 사용되지 않는다.
 
 
 
Mouse 입력에 관한 메시지
 
wParam
마우스 버튼의 상태와 키보드 조합 키( shift, Ctrl )의 상태가 전달된다.
 
lParam
하위 워드에 마우스 버튼이 눌러진 x 좌표, 상위 워드에 y 좌표를 가지며 좌표값을 검출해 내기 위해 LOWORD, HIWORD 등의 매크로 함수를 사용한다.
( LOWORD( lParam ), HIWORD( lParam ) )
 
 
wParam, lParam 의 상하위 워드/바이트 를 분리( LOWORD, HIWORD, LOBYTE, HIBYTE )하는 매크로
#define LOWORD( l )     ( ( WORD )( l ) )
#define HIWORD( l )      ( ( WORD )( ( ( DWORD )( l ) >> 16 ) & 0xFFFF ) )
#define LOBYTE( w )    ( ( BYTE )( w ) )
#define HIBYTE( w )     ( ( BYTE )( ( ( WORD )( w ) >> 8 & 0xFF ) )
 
 
두 개의 16비트값을 가지고 32비트값을 조립하는 매크로
#define MAKEWORD( a, b )
    ( ( WORD )( ( ( BYTE )( a ) ) | ( ( WORD )( ( BYTE )( b ) ) ) << 8 ) )
#define MAKELONG( a, b )
    ( ( LONG )( ( ( WORD )( a ) ) | ( ( DWORD )( ( WORD )( b ) ) ) << 16 ) )
 
 
 
LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
 
강제로 메시지가 발생한 것처럼 만드는 함수
hWnd 윈도우로 Msg 메시지를 보내며 세 번째, 네 번째 인수는 메시지의 추가 정보인 wParam, lParam 이며 보내는 메시지에 따라 의미는 달라진다.
 
 
 
WM_SIZE
 
wParam
이 메시지가 발생한 이유를 나타내는 플래그가 전달된다.
 
SIZE_MAXHIDE
다른 윈도우가 최대화되어 이 윈도우가 가려졌다.
SIZE_MAXIMIZED
최대화되었다.
SIZE_MAXSHOW
다른 윈도우가 원래 크기로 복구되어 이 윈도우가 드러났다.
SIZE_MINIMIZED
최소화되었다.
SIZE_RESTORED
크기가 변경되었다.
 
lParam
윈도우의 크기가 변경될 때 하위 워드에 변경된 후의 윈도우 폭이, 상위 워드에 높이가 전달된다.
 
 
 
WM_MOVE
 
lParam
윈도우의 위치가 변경될 때마다 보내지며 하위 워드에 윈도우의 새 X 좌표, 상위 워드에 윈도우의 새 Y 좌표가 전달된다.
 
 
 
WM_COMMAND( 가장 중요하므로 암기 필수 )
프로그램 실행중에 사용자가 메뉴 항목을 선택하거나 액셀러레이터를 누를 때 발생한다. 또한 버튼, 에디트 박스 등의 컨트롤이 부모 윈도우로 통지 메시지를 보낼 때도 발생한다.
 
wParam
하위 워드로 어떤 메뉴 항목이 선택되었는가가 전달되며 LOWORD( wParam ) 을 읽어 판단할 수 있다.
 
LOWORD( wParam )
메뉴나 액셀러레이터, 컨트롤의 ID
HIWORD( wParam )
컨트롤이 보내는 통지 메시지( 통지 코드 ), 메뉴가 선택된 경우는 0 이 되며 액셀러레이터가 선택된 경우는 1 이 된다.
 
lParam
통지 메시지를 발생시킨 컨트롤의 윈도우 핸들, 메시지를 보낸 차일드 윈도우의 윈도우 핸들
 
 
 
WM_CREATE           : 윈도우 생성 직후에 호출되어 추가 요구사항 수행
wParam : 사용안함 
lParam  : 윈도우 생성의 정보를 가지고 있는 : CREATESTRUCT structure 포인터

WM_INITDIALOG       : 다이얼로그 생성 직후에 호출
wParam : 키보드 포커스를 받을 컨트롤의 핸들.
              통상 이 컨트롤은 탭 순서가 가장 빠르고 보이며 사용 금지 상태가 아니고 WS_TABSTOP
              스타일을 가진 첫번째 컨트롤이다. 이 메시지에서 TRUE를 리턴하면 wParam으로 전달된
              컨트롤에 포커스가 맞추어진다.
lParam  :  대화상자 초기화 정보가 전달된다. DialogBox 함수로 대화상자를 호출한 경우는
               0이 전달되며 DialogBoxParam, CreateDialogParam 등의 함수로 대화상자를
               호출했을 때만 전달된다. 대화상자로 전달되는 인수값에 해당하며 이 인수에 따라
               대화상자의 모양이나 동작을 다르게 정의할 수 있다. 프로퍼티 시트의 경우 lParam은
               PROPSHEETPAGE 구조체의 포인터가 전달된다.

WM_PAINT               : 윈도우 화면이 그려질때 (화면이 갱신될때)
wParam : 사용안함
lParam  : 사용안함

WM_DESTROY         : 윈도우 소멸 직전에 호출
wParam : 사용안함
lParam  : 사용안함

WM_COMMAND       : 자식에게 보내거나 받는 메시지가 있을때
 메시지 소스
 wParam(high word)
 wParam(high word) 
lParam 
 Menu 0 메뉴 ID
 Accelerator(단축키) 1 단축키 ID 0
 Control 통지코드 컨트롤 ID 윈도우 컨트롤 핸들

WM_QUIT                : GetMessage나 PeekMessage가 false가 된다.
wParam  : 종료 코드이며 PostQuitMessage의 인수가 전달된다.
               이 종료 코드는 응용 프로그램을 실행시킨 프로세스가 받으나 보통 무시한다.
lParam   : 사용 안함

WM_KEYDOWN        : 키를 눌렀을때
wParam  : 가상 키코드값이며 어떤 키가 눌러졌는지를 나타낸다.
               가상 키코드는 키보드의 종류에 독립적인 키 코드값이다.
lParam   : 눌러진 키와 키보드 상태에 대한 여러 가지 정보를 가지는 비트 필드값이며
               각 비트별로 다음과 같은 정보가 전달된다.
     0-15    : 반복 카운트
     16-23  : 스캔 코드
     24    : 오른쪽 Alt. 오른쪽 Ctrl등 101키에서만 있는 확장키가 눌러졌을 경우 1이 된다. 
     25-28  : 미사용
     29      : Alt 키가 눌려지면 1
     30      : 메시지가 보내지기 전에  눌러져 있었으면 1
     31      : 키가 놓아지면 1, 눌려지면 0

WM_KEYUP             : 키를 눌렀다가 놓았을때
wParam  : 떨어진 키를 나타내는 가상 키코드 값이다.
lParam   : 떨어진 키와 키보드 상태에 대한 여러 가지 정보를 가지는 비트 필드값이다

WM_CHAR               : 키를 눌렀을때 ASCII코드 값을 받아온다.
wParam  : 입력된 문자 코드이다. 일반적으로 이 코드는 아스키 코드이며
               곧바로 문자열 출력에 사용할 수 있다.
lParam   : 눌러진 키와 키보드 상태에 대한 여러 가지 정보를 가지는 비트 필드값이며
               각 비트별로 다음과 같은 정보가 전달된다. 그러나 WM_CHAR 메시지에서는
               이 정보를 사용하지 않는다. 왜냐하면 키 하나와 문자 하나의 대응 방식이 일정하지 않기
               때문에 이 정보는 항상 유효하지 않기 때문이다.

WM_LBUTTONDOWN : 마우스 왼쪽 버튼을 눌렀을때
wParam  : 키보드와 다른 마우스 버튼의 현재 상태를 나타내는 값이며 다음 플레그들의 조합값이다.
  MK_CONTROL : Ctrl 키가 눌러져 있다.
  MK_LBUTTON : 마우스 왼쪽 버튼이 눌러져 있다.
  MK_MBUTTON : 마우스 가운데 버튼이 눌러져 있다.
  MK_RBUTTON : 마우스 오른쪽 버튼이 눌러져 있다.
  MK_SHIFT : Shift 버튼이 눌러져 있다.
  MK_XBUTTON1 : Windows 2000/XP: The first X button is down.
  MK_XBUTTON2  : Windows 2000/XP: The second X button is down.
lParam : 마우스의 현재 X, Y좌표이다. 이 좌표는 작업 영역의 원점을 기준으로 한 좌표이다.

WM_LBUTTONUP      : 마우스 왼쪽 버튼을 눌렀다가 놓았을때
wParam  : 키보드와 다른 마우스 버튼의 현재 상태를 나타내는 값이며 다음 플레그들의 조합값이다.
lParam   : 마우스의 현재 X, Y좌표이다. 이 좌표는 작업 영역의 원점을 기준으로 한 좌표이다.
              대부분의 경우 좌표는 양수값이지만 캡처된 특수한 상황에서는 음수일 수도 있는데
              이 경우 반드시 (int)형으로 다시 한번 더 캐스팅해 주어야 부호를 제대로 얻을 수 있다.

WM_LBUTTONDBLCLK : 마우스 왼쪽 버튼을 더블 클릭 했을때
wParam  : 키보드와 다른 마우스 버튼의 현재 상태를 나타내는 값이며 다음 플레그들의 조합값이다.
lParam   : 마우스의 현재 X, Y좌표이다. 이 좌표는 작업 영역의 원점을 기준으로 한 좌표이다.

WM_SIZE                 : 윈도우 사이즈 변경완료 되었을때
wParam  : 윈도우의 크기가 변경된 이유와 유형값을 가진다. 다음 중 하나의 값이 전달된다
   SIZE_MAXHIDE  : 다른 윈도우가 최대화될 때 모든 팝업 윈도우에게 전달된다
   SIZE_MAXIMIZED  : 윈도우가 최대화되었다
   SIZE_MAXSHOW  : 최대화되어 있던 윈도우가 복구될 때 모든 팝업 윈도우에게 전달된다.
   SIZE_MINIMIZED  : 윈도우가 최소화되었다.
   SIZE_RESTORED  : 윈도우의 크기가 변경되었다. 마우스로 경계선을 드래그하거나 시스템 메뉴의
                            크기 조정 항목으로 윈도우의 크기를 직접 변경할 때이다.
    SIZE_MAXIMIZED
lParam  : 윈도우의 작업 영역 크기이다. LOWORD(lParam)이 윈도우의 폭이며 HIWORD(lParam)이
              윈도우의 높이이다. 윈도우의 폭과 높이는 32비트값으로 전달되지만 이 메시지로 전달되는
              폭과 높이는 16비트 크기를 가진다.

WM_SIZING              : 윈도우 사이즈가 변경되고 있을때
wParam : Specifies which edge of the window is being sized. This parameter can be one of
              the following values.
   WMSZ_BOTTOM  : Bottom edge
   WMSZ_BOTTOMLEFT : Bottom-left corner
   WMSZ_BOTTOMRIGHT : Bottom-right corner
   WMSZ_LEFT : Left edge
   WMSZ_RIGHT : Right edge
   WMSZ_TOP : Top edge
   WMSZ_TOPLEFT : Top-left corner
   WMSZ_TOPRIGHT : Top-right corner
lParam  : Pointer to a RECT structure with the screen coordinates of the drag rectangle.
              To change the size or position of the drag rectangle, an application must change
              the members of this structure.

WM_MOVE               : 윈도우가 이동된 후
wParam : 사용 안함
lParam : LOWORD(lParam) : 윈도우의 X좌표.
             HIWORD(lParam) : 윈도우의 Y 좌표. 이 좌표는 오버랩드, 팝업 윈도우의 경우
                                        화면 좌표이며 차일드 윈도우는 부모 윈도우의 작업 영역을 기준으로
                                        한 좌표이다.

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소