728x90
'나우캠퍼스X아워즈팜'유튜브의 'Win32 API 2강. Win32 API 프로그래밍 구조 (2/5)'영상을 보고 정리한 내용입니다.
먼저 윈도우 프로그래밍을 위한 프로젝트를 만들겠습니다.
프로젝트 이름을 설정해주고 만들기를 누릅니다.
애플리케이션 종류를 데스크톱 애플리케이션으로 바꿔주고 빈 프로젝트를 체크합니다.
프로젝트를 오른쪽 클릭 합니다.
멀티바이트 문자 집합이 c, c++에서 사용하던 아스키코드의 1~2byte까지 전부 포함하는 문자를 지원하기 때문에 멀티바이트 문자 집합으로 바꿔줍니다.(c, c++에서 쓰던 함수를 그대로 사용할 것이고 멀티바이트는 아스키코드+ 한글도 지원하기 때문에)
멀티 바이트(MBCS)
- 아스키코드값(1byte), 한글(2byte) 모두 지원
- 1~2Byte 크기의 문자 집합
- 영문 한글, 중국어 일본어 등 지원
- 일반 c함수는 MBCS 문자집합을 사용한다.
유니코드
- 2Byte로 전세계 언어를 표현
- 멀티 바이트 문자 집합비해 메모리 많이 차지, 처리속도는 빠름
- 아스키코드 값의 일부는 유니코드와 같다.
문자와 문자열
TCHAR
- ANSI
- CHAR, char
- Unicode
- WCHAR, wchar_t
LPTSTR
- ANSI
- LPSTR -> char *
- Unicode
- LPWSTR, wchar_t *
*모르는 데이터형이 나오면 찾아보기!
멀티바이트 -> 유니코드로 바꿔야할 때가 있다
- LPTSTR str = TEXT("문자열"); <- 멀티바이트를 유니코드로 바꿈
WinMain
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- #define WINAPI __stdcall
매개변수를 스택에 넣는 방법 - hInstance 인스턴스
실행되고 있는 프로그램들을 구별하기 위해 사용된다고 하였다. 이것은 os가 할당하는 것이며 같은 프로그램이라면 동일한 값을 가지고 있다. 각각에 대한 값은 핸들로 구분한다. - hPrevInstance
이전 인스턴스에 대한 값을 받는 부분, 지금 사용 x 항상 o - lpCmdLine
실행파일 옆에 값을 주어서 외부에서, 실행하고자 하는 파일과 함께 외부에서 그 프로그램 안으로 값을 넣고자 할 때 사용하는. 프로그램 외부에서 내부로 값 설정 - nCmdShow
윈도우 출력 형태에 관한 값(윈도우가 화면에 보여주도록 하게 하는 그런 값) - int APIENTRY _tWinMain
위와 같은 WinMain도 만날 수 있다. 유니코드를 사용한다면 저런 형태로 쓴다. - 가장 잘 기억해야 할 것은 WinMain은 윈도우 프로그램의 진입점이고 윈도우의 구조체에 대한 등록과 생성, 메시지 루프가 있다는 것을 꼭 기억하기
- 코딩 해보기(WinMain함수의 원형)
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
return 0;
} - hInstance, nCmdShow가 주로 사용됨
WndProc
- LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- #define CALLBACK __stdcall
- typedef unsigned int UINT;
- typedef long LONG_PTR;
- typedef unsigned int UINT_PTR;
- typedef UINT_PTR WPARAM;
- typedef LONG_PTR LPARAM;
- typedef LONG_PTR LRESULT;
- 코딩해보기(함수의 원형)
LRESULT CALLBACK WndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
return 0;
}
혹시 제가 잘못 이해한 부분이(잘못된 정보) 있다면 알려주시면 감사하겠습니다. :)
'무작정 따라해보기(정리, 문제풀기) > Win32API' 카테고리의 다른 글
7. Win32 API 프로그래밍 (0) | 2021.08.10 |
---|---|
6. Win32 API 프로그래밍 (0) | 2021.08.09 |
4. Win32 API 프로그래밍 (0) | 2021.08.01 |
3. Win32 API 프로그래밍 (0) | 2021.07.30 |
2. Win32 API 프로그래밍 (0) | 2021.07.29 |