[정의 ] 32비트 운영체제(NT, 2000, XP, ...]에서는 WORD가 16비트 데이터형이고
DWORD가 32비트 데이터형입니다.
1. MAKELONG
1.1 함수의 원형
1.2 함수의 기능
1.3 함수의 매개변수에 대한 설명
1.4 함수의 반환값
1.5. 사용 예제
2.1 함수의 원형
2.2 함수의 기능
2.3 함수의 매개변수에 대한 설명과 2.4 함수의 반환값은 MAKELONG과 내용이 동일합니다.
2.5. 사용 예제
SendMessage( LM_USER_DATA, (WPARAM)1, MAKELPARAM(pos.x, pos.y) );
2.6. 함수의 요구사항
3.1 함수의 원형
3.2 나머지 사항은 MAKELPARAM과 내용이 모두 동일합니다.
4.1 함수의 원형
4.2 나머지 사항은 MAKELPARAM과 내용이 모두 동일합니다.
출처 : 팁스소프트
DWORD가 32비트 데이터형입니다.
1. MAKELONG
1.1 함수의 원형
DWORD MAKELONG( WORD wLow, WORD wHigh );
1.2 함수의 기능
16비트 크기의 변수인 wLow 와 wHigh의 값을 32비트 크기로 합쳐서 반환하는 함수이다.
wLow는 32비트중에서 하위 16비트에 저장되고 wHigh는 상위 16비트에 저장된다.
wLow는 32비트중에서 하위 16비트에 저장되고 wHigh는 상위 16비트에 저장된다.
1.3 함수의 매개변수에 대한 설명
1.3.1 wLow
32 비트 데이터로 합쳤을 때, 하위 16비트에 위치할 값을 명시한다.
1.3.2 wHigh
32 비트 데이터로 합쳤을 때, 상위 16비트에 위치할 값을 명시한다.
1.4 함수의 반환값
wLow와 wHigh 값을 32비트 데이터로 합쳐서 반환한다. wLow값이 0x2345 이고 wHigh값이
0x6789라면 0x67892345 라는 값이 반환된다.
0x6789라면 0x67892345 라는 값이 반환된다.
1.5. 사용 예제
WORD wLow = 0x2345;
WORD wHigh = 0x6789;
WORD wHigh = 0x6789;
DWORD data = MAKELONG(wLow, wHigh);
CString str;
str.Format("%x", data);
AfxMessageBox(str); // 67892345 라고 출력됨!!
str.Format("%x", data);
AfxMessageBox(str); // 67892345 라고 출력됨!!
1.6. 함수의 요구사항
windef.h내에 위 함수가 매크로 형식으로 선언되어있다. 하지만, 윈도우즈 프로그램을 하기 위해서
기본적으로 포함시키는 헤더파일들에서 아래와 같이 헤더파일을 참고하도록 되어 있기 때문에
별도로 헤더파일을 포함시킬 필요가 없다. 따라서 오류가 날때만 아래와 같이 windef.h를 포함시키면 된다.
기본적으로 포함시키는 헤더파일들에서 아래와 같이 헤더파일을 참고하도록 되어 있기 때문에
별도로 헤더파일을 포함시킬 필요가 없다. 따라서 오류가 날때만 아래와 같이 windef.h를 포함시키면 된다.
#include "windef.h"
MAKELONG 매크로 함수는 windef.h 헤더파일에 아래와 같이 정의되어있다.
#define MAKELONG(a, b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))
2. MAKELPARAM
2.1 함수의 원형
LPARAM MAKELPARAM( WORD wLow, WORD wHigh );
2.2 함수의 기능
이 매크로 함수도 MAKELONG함수와 마찬가지로 16비트 크기의 변수인 wLow 와 wHigh의 값을
32비트 크기로 합쳐서 반환하는 함수이다. wLow는 32비트중에서 하위 16비트에 저장되고
wHigh는 상위 16비트에 저장된다.
32비트 크기로 합쳐서 반환하는 함수이다. wLow는 32비트중에서 하위 16비트에 저장되고
wHigh는 상위 16비트에 저장된다.
윈도우즈 메시지에 포함되어 전달되는 두개의 인자중 하나인 lParam 을 구성할때 사용한다.
2.3 함수의 매개변수에 대한 설명과 2.4 함수의 반환값은 MAKELONG과 내용이 동일합니다.
2.5. 사용 예제
마우스 좌표를 얻어서 다른 윈도우로 그 좌표를 전달해야하는데 메시지를 이용한다고 가정하자.
하지만, wParam에는 이미 다른 정보를 사용해야하기 때문에 좌표 값을 lParam에 명시해야하는
경우라고 가정하자.
하지만, wParam에는 이미 다른 정보를 사용해야하기 때문에 좌표 값을 lParam에 명시해야하는
경우라고 가정하자.
마우스 좌표값은 x 좌표, y 좌표로 나누어져 있기 때문에 이 두개의 값을 합쳐서 한개의 값으로
만들어 lParam 에 저장해야하는데 이럴때 이 매크로 함수를 사용하면 된다.
만들어 lParam 에 저장해야하는데 이럴때 이 매크로 함수를 사용하면 된다.
[가정] 전달하는 메시지를 LM_USER_DATA 라고 가정하고 wParam에는 1이 들어가야 한다고
가정한다.
가정한다.
CPoint pos;
GetCursorPos(&pos);
SendMessage( LM_USER_DATA, (WPARAM)1, MAKELPARAM(pos.x, pos.y) );
2.6. 함수의 요구사항
winuser.h내에 위 함수가 매크로 형식으로 선언되어있다. 하지만, 윈도우즈 프로그램을 하기 위해서
기본적으로 포함시키는 헤더파일들에서 아래와 같이 헤더파일을 참고하도록 되어 있기 때문에
별도로 헤더파일을 포함시킬 필요가 없다. 따라서 오류가 날때만 아래와 같이 winuser.h를 포함시키면 된다.
기본적으로 포함시키는 헤더파일들에서 아래와 같이 헤더파일을 참고하도록 되어 있기 때문에
별도로 헤더파일을 포함시킬 필요가 없다. 따라서 오류가 날때만 아래와 같이 winuser.h를 포함시키면 된다.
#include "winuser.h"
MAKELPARAM 매크로 함수는 winuser.h 헤더파일에 아래와 같이 정의되어있다.
#define MAKELPARAM(l, h) ((LPARAM) MAKELONG(l, h))
3. MAKEWPARAM
3.1 함수의 원형
WPARAM MAKEWPARAM( WORD wLow, WORD wHigh );
3.2 나머지 사항은 MAKELPARAM과 내용이 모두 동일합니다.
4. MAKELRESULT
4.1 함수의 원형
LRESULT MAKELRESULT( WORD wLow, WORD wHigh );
4.2 나머지 사항은 MAKELPARAM과 내용이 모두 동일합니다.
출처 : 팁스소프트
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
전처리문에 대한 설명 (0) | 2009.06.09 |
---|---|
문자열 배열 정렬(소트;Sort)역순 소팅, qsort 함수 사용법 (0) | 2009.06.09 |
퀵정렬(Quick Sort)이란? (0) | 2009.06.09 |
C언어 정수,실수 데이터형 (0) | 2009.06.09 |
itoa 함수 소스 (0) | 2009.06.09 |