검색결과 리스트
글
메세지
키보드 입력등 이벤트가 발생할 때 발생하는 양의 정수값
인스턴스(Instance)
메모리 에 로드되어 실행된 프로그램을 운영체제가 확인하기 위해 할당하는 양의 정수값
핸들(handle)
핸들은 운영체제의 자원을 사용하거나 윈도우를 생성할 때 운영체제로부터 할당되는 양의 정수값
HWND, HDC, HPEN, HBRUSH, HBITMAP -> void * 형 즉 메모리 주소값 , 모두 4byte임
프로젝트 생성 시 주의 할 점
메뉴 프로젝특(P) / 프로젝트이름 속성 페이지 / 구성 속성 /일반 / 문자집합 / 멀티바이트 문자 집합 사용 설정해 줌
ANSI 문자 집합 설정
유니코드 2 byte를 기준
프로그램 형식의 변화
▶c 언어
main()
▶Win32 API
WinMain()
WinProc()
1. WinMain의 역할
WinMain()
{
윈도우 속성 설정 및 등록
윈도우 생성과 출력
메시지 루프
}
2. 윈도우 프로시져 함수인 WndProc()의 역할 WinMain의 역할
WndProc() -> 콜백(CallBack) 함수
역할 -> 메시지 처리
WndProc()
{
switch(message) //message 는 unsiged int 형이다.(양의 정수)
case 메시지1:
break;
------------
default:
DefWindProc();
}
3. Win32 API 프로그램의 기본 코드
WinMain() 함수의 매개변수
win32 API 프로그램 작성 순서 (6단계)
☆ visual C++ 6.0 과 visual Studio 2010 소스 코드가 둘 다 표현 형식이 다를 뿐 같은 코드이다.
VB 2010에서 컴파일 하게되면 VB 6.0 형태로 바뀌어서 컴파일 되므로 6.0형태로 소스를 작성한다.
툴 |
형식 |
Visual C++ 6.0 |
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) ☞ WinDef.h에 #define WINAPI __stdcall로 정의 됨 |
Visual Studio 2008 Visual Studio 2010 |
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpszCmdParam, int nCmdShow) ☞ WinDef.h에 #define APIENTRY WINAPI로 정의 됨 |
윈도우 데이형 -> MSDN 참조사이트(msdn.microsoft.com)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
라이브러리 툴바에서 클릭 후 찾기에 windows data type 검색하면 윈도우즈 data type에 대해서 형식이 나옴
visual stdio 2008, 2010 은 유니코드 형태 이고 visual stdio 6.0 은 ANSI형이라 형변환이 필요하다.
우리가 쓰는 코드형태는 ANSI형으로 코딩한다.
데이터형 |
정의 |
LPSTR |
typedef char CHAR; typedef CHAR *LPSTR |
LPTSTR |
#ifdef UNICOOE 유니 코드이면 LPWSTR 로 typedef LPWSTR LPTSTR; #else ANCI 형이면 LPSTR 로 정의 typedef LPSTR LPTSTR; #endif |
WinMain()과 main() 소스 비교
main() |
#include <stdio.h> //main의 기본 형식은 아래와 같으나 사용하지 않으므로 일반적으로 int main(void)로 쓴다. int main(int argc, char *argv[], char *envp[]) { return 0; } |
WinMain() |
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { return 0; } |
|
|
4 변수 명명법
접두어 |
원래말 |
의미 |
cb |
Count of Bytes |
바이트 수 |
dw |
Double word |
부호없는 long형 정수 |
h |
handle |
윈도우, 비트맵, 파일 등의 핸들 |
sz |
Null Terminated |
NULL 종료 문자열 |
ch |
Character |
문자형 |
a |
Array |
배열 |
w |
Word |
부호없는 정수형 |
i |
Integer |
정수형 |
p.lp |
Long pointer |
포인터형 |
b | Bool | 놀리형 |
데이터형 |
의미 |
BYTE |
unsigned char형 |
CHAR |
char형 |
WORD |
unsigned short형 |
DWORD |
unsigned long형 |
LONG |
long 과 동일 |
BOOL |
정수형이며 TRUE,FALSE 중 한 값을 가진다 |
☞ 기존 데이터형으로 조합이 가능한 형을 새로운 데이터혀응로 정의하여 사용하는 이유
첫째 윈도우즈가 항상 인텔 기반의 IBM 컴퓨터에서만 실행되라는 법은 없으며 언젠가는 다른 시스템으로 이식될 가능성도
있는데 그럴 경우 소스 차원의 이식성을 확보하기 위함
둘째 현재 WORD형이 현재 2바이트의 부호없는 정수형이지만 팬티엄 이유 989이나 1286쯤에는 4바이트로 확장될지도 모름
셋째 유니코드 환경에서는 문자형의 크기가 달라질 수도 있고 64비트나 128비트 환경에서는 정수형의 길이가 바뀔 수도
'…™업무일지。 > …™WINAPI。' 카테고리의 다른 글
(NonQueued Messages)넌 큐 메시지 와 (Queued Messages)큐 메시지 (0) | 2014.10.22 |
---|---|
Win32 API 프로그램 작성 순서 6단계 (0) | 2014.10.21 |
▶Win32 API 주요 함수 (0) | 2014.10.17 |
※ WINAPI 기본형 (0) | 2014.10.15 |
WIN API 시작하기 ver1_0a (0) | 2014.09.29 |
RECENT COMMENT