'전체 글'에 해당되는 글 60건

변수명명법

language/API 2016. 4. 26. 21:12
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

변수명명법


자주 사용하는 변수 형식에 대해서 관습적으로 정해진 접두어를 많이 사용한다.

이런 변수 명명법을 헝가리식 명명법(Hungarian Naming)이라고 한다.


cb(Count of Bytes): 바이트 수

dw(double word): 부호 없는 long형 정수(unsigned)


h(handle): 윈도우, 비트맵, 파일 등의 핸들

sz(Null Terminated): NULL 종료 문자열


ch(Character): 문자형

a(Array): 배열

w(Word): 부호없는 정수형


i(Integer): 정수형

p, lp(long pointer): 포인터형

b(Bool): 논리형


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

사용자 정의 데이터형


windows.h 헤더 파일에 typedef로 선언되어 있고, 표준 데이터형처럼 사용한다.

C 타입의 데이터형을 사용하지 않고 이와 같은 중간 타입을 사용하는 이유는 이식성을 고려해서다.


BYTE: unsigned char

CHAR: char


WORD: unsigned short

DWORD: unsigned long

LONG: long과 동일


BOOL: 정수형, true, false 중 하나의 값을 가진다.




'language > API' 카테고리의 다른 글

유니코드(Unicode)  (0) 2016.04.26
비트 OR 연산자  (0) 2016.04.26
핸들(Handle)에 대한 이해  (0) 2016.04.26
WM_SIZE  (0) 2016.04.24
API 프로그래밍의 시작  (0) 2016.04.24
블로그 이미지

saylin

,

WM_SIZE

language/API 2016. 4. 24. 16:35
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

static RECT rt;

switch(iMessage) {

case WM_DESTROY:

PostQuitMessage(0);

return 0;


case WM_SIZE:

GetClientRect(hWnd, &rt);

InvalidateRect(hWnd, NULL, true);

return 0;


case WM_PAINT:

hdc=BeginPaint(hWnd, &ps);

SetTextAlign(hdc, TA_CENTER);

TextOut(hdc, rt.right/2, rt.bottom/2, TEXT("Center String"), 13);

EndPaint(hWnd, &ps);

return 0;


}

return(DefWindowProc(hWnd, iMessage, wParam, lParam));

}




'language > API' 카테고리의 다른 글

유니코드(Unicode)  (0) 2016.04.26
비트 OR 연산자  (0) 2016.04.26
핸들(Handle)에 대한 이해  (0) 2016.04.26
변수명명법  (0) 2016.04.26
API 프로그래밍의 시작  (0) 2016.04.24
블로그 이미지

saylin

,

CWnd::GetClientRect

language/MFC 2016. 4. 24. 16:27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CWnd::GetClientRect 

CWindow::GetClientRect 

COleControl::GetClientRect 

CDockingPanesRow::GetClientRect 



LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

static RECT rt;

switch(iMessage) {

case WM_DESTROY:

PostQuitMessage(0);

return 0;


case WM_CREATE:

GetClientRect(hWnd, &rt);

return 0;


case WM_PAINT:

hdc=BeginPaint(hWnd, &ps);

SetTextAlign(hdc, TA_CENTER);

TextOut(hdc, rt.right/2, rt.bottom/2, TEXT("Center String"), 13);

EndPaint(hWnd, &ps);

return 0;


}

return(DefWindowProc(hWnd, iMessage, wParam, lParam));

}




'language > MFC' 카테고리의 다른 글

비트맵과 이미지 출력  (0) 2016.05.07
MFC 코드의 기본 구조  (0) 2016.05.07
CWnd Class  (0) 2016.05.07
키보드 입력  (0) 2016.04.29
MFC 프로그래밍  (0) 2016.04.29
블로그 이미지

saylin

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

API에 대해 공부하면서 배운 내용들을 간단하게 정리하고자 블로그를 개설하게 되었다.

개인적인 복습을 위해서 배웠던 내용들을 바로 정리하지는 않고 선등록 후 편집하는 과정을 거칠 것 같다.


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

도스(DOS), 즉 Console 환경에서의 C 코드 중에서

아무 것도 출력하지 않고 프로그램을 종료하는 C 코드는 다음과 같다.


// Console

#include <stdio.h>


int main(void)

{

return 0;

}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

윈도우즈(Windows), GUI(Graphic User Interface) 환경에서도 위와 동일하게 

창 안에 아무 것도 없고 종료하는 기능만을 가지는 벙어리 윈도우를 생성하는 코드를 작성할 수 있다.

다만 Console 환경과 비교했을 때, 코드의 길이와 양 자체는 비교할 수 없을 정도로 길고 많다.


// Windows

#include <Windows.h>


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE g_hInst;

LPCTSTR IpszClass=TEXT("First");


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int nCmdShow)

{

HWND hWnd;

MSG Message;

WNDCLASS WndClass;

g_hInst = hInstance;


WndClass.cbClsExtra=0;

WndClass.cbWndExtra=0;

WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // WHITE_BRUSH BLACK_BRUSH

WndClass.hCursor=LoadCursor(NULL, IDC_ARROW);

WndClass.hIcon=LoadIcon(NULL, IDI_APPLICATION);

WndClass.hInstance=hInstance;

WndClass.lpfnWndProc=WndProc;

WndClass.lpszClassName=IpszClass;

WndClass.lpszMenuName=NULL;

WndClass.style=CS_HREDRAW | CS_VREDRAW;


RegisterClass(&WndClass);


hWnd=CreateWindow(IpszClass, IpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);

ShowWindow(hWnd, SW_RESTORE); // nCmdShow


while (GetMessage(&Message, NULL, 0, 0)) {

TranslateMessage(&Message);

DispatchMessage(&Message);

}

return (int)Message.wParam;

}


LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

switch(iMessage) {

case WM_DESTROY:

PostQuitMessage(0);

return 0;

case WM_LBUTTONDOWN:

MessageBeep(0);

return 0;

}

return(DefWindowProc(hWnd, iMessage, wParam, lParam));

}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

윈도우즈의 특징 및 장점


1. 그래픽 기반(GUI)의 운영체제

2. 멀티 태스킹

3. 메세지 구동 시스템

4. 장치독립성(Device Driver의 제공)

5. 일관성

6. 리소스와 코드의 분리


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

API(Application Programming Interface)

운영체제가 응용프로그램을 위해 제공하는 함수의 집합







'language > API' 카테고리의 다른 글

유니코드(Unicode)  (0) 2016.04.26
비트 OR 연산자  (0) 2016.04.26
핸들(Handle)에 대한 이해  (0) 2016.04.26
변수명명법  (0) 2016.04.26
WM_SIZE  (0) 2016.04.24
블로그 이미지

saylin

,