윈도 API, Windows API
윈도 프로그래밍, Windows Programming
윈도 프로그래밍, Windows Programming
표는 알파벳 순으로 정렬.
1. 통상적으로 많이 정의되는 함수 ¶
WinMain
{
각 윈도에 대해 RegisterWindowEx()로 윈도 클래스를 등록한 다음
CreateWindow()로 윈도우를 생성한다.
{
각 윈도에 대해 RegisterWindowEx()로 윈도 클래스를 등록한 다음
CreateWindow()로 윈도우를 생성한다.
RegisterClassEx는 또 뭐지?
WndProc을 등록함?
}WndProc
{
{
}
2. 함수의 타입?? ¶
WINAPI
WinMain()을 꾸며주는 데 뜻은?
CALLBACKWndProc()이 LRESULT CALLBACK WndProc(...)으로 정의된다.
3. 타입 ¶
정의는 이렇게 32비트 정수이다.
typedef DWORD COLORREF;
RGB는,
CONST
DWORD
HANDLE
HBRUSH
HCURSOR
HDC
HICON
HINSTANCE
HMENU
HPALETTE
HPEN
HWND
LPARAM
LPCTSTR
LPMSG
LRESULT
MSG
PPAINTSTRUCT
PWNDCLASSEX
TCHAR
UINT
WNDCLASSEX
WNDPROC
#define RGB(r, g, b) ((COLORREF)(((BYTE)(r) | ((WORD)((BYTE)(g)) << 8 | (((DWORD)(BYTE(b)) << 16)))}
CONST
DWORD
HANDLE
HBRUSH
HCURSOR
HDC
HICON
HINSTANCE
HMENU
HPALETTE
HPEN
HWND
LPARAM
LPCTSTR
LPMSG
MSG와 차이는
LPVOIDLRESULT
MSG
LPMSG와 차이는
PAINTSTRUCTPPAINTSTRUCT
PAINTSTRUCT의 포인터형
PSTRPWNDCLASSEX
WNDCLASSEX의 포인터형
RECTTCHAR
UINT
WNDCLASSEX
WNDPROC
프로시저 함수의 타입인 듯
WPARAM3.1. 크기에 따라서 또는 관련된 것을 묶어서 정리 ¶
BYTE
WORD
DWORD
DWORDLONG 64bit unsigned int?
WORD
DWORD
DWORDLONG 64bit unsigned int?
LONG 32bit signed int
LONGLONG 64bit signed int?
LONGLONG 64bit signed int?
FLOAT 32bit float
WPARAM 16bit message parameter
LPARAM 32bit message parameter
LPARAM 32bit message parameter
LPSTR =char*
LPCSTR
LPCTSTR
LPTSTR
LPCSTR
LPCTSTR
LPTSTR
4.3. WM_ ¶
Window Message?
LRESULT CALLBACK WndProc(hwnd, iMsg, wParam, lParam) 함수 안의 switch(iMsg)문에서 처리하는 경우가 많은듯
WM_CREATE
WM_DESTROY
WM_PAINT
WM_DESTROY
WM_PAINT
5. 함수 ¶
BeginPaint
DefWindowProc(hwnd, iMsg, wParam, lParam)
PostQuitMessage
ShowWindow(hWnd, iCmdShow)
TextOut(hdc, x, y, "string", string length)인지 chk
TranslateMessage
끝나면 EndPaint
CreateWindows(..많음..)DefWindowProc(hwnd, iMsg, wParam, lParam)
WndProc에서 switch(iMsg)로 처리하고 나서 처리하지 않은 나머지 메시지를 처리하라는 뜻으로 이것을 호출? chk
DispatchMessageLONG DispatchMessage(CONST MSG *lpmsg);
커널에서 가져온 메시지를 wndclass에서 지정한 함수로 보내는(배달하는) 역할.
EndPaint커널에서 가져온 메시지를 wndclass에서 지정한 함수로 보내는(배달하는) 역할.
시작할 땐 BeginPaint
GetMessage(&msg, 0, 0, 0)BOOL GetMessage (
GetStockObject(tbw)LPMSG lpmsg,
HWND hWnd,
UINT uMsgFilterMin,
UINT uMsgFilterMax
);HWND hWnd,
UINT uMsgFilterMin,
UINT uMsgFilterMax
PostQuitMessage
ShowWindow(hWnd, iCmdShow)
TextOut(hdc, x, y, "string", string length)인지 chk
TranslateMessage
BOOL TranslateMessage(CONST MSG *lpmsg);
UpdateWindow(hWnd)6. Hungarian Notation ¶
aka naming/convention/rule
b | BOOL? |
cb | count of bytes? |
dw | DWORD? |
h | handle |
hbr | handle to background color?? |
hdc | DC에 대한 핸들 |
hwnd | Window에 대한 핸들 |
i | int |
l | LONG? |
lp | |
lpfn | WndProc같은 함수에 대한 long pointer? |
lpsz | null-terminated string(asciiz)에 대한 long pointer? |
msg | MSG 형식의 구조체 |
p | 포인터,pointer |
ps | PAINTSTRUCT 형식의 구조체 |
sz | |
u | unsigned int? UINT? |
w | WORD? |
g_ | 전역 변수 |
m_ | 멤버 변수 |
i_ | 함수의 인자로 들어온 변수 |