'API Reference'에 해당되는 글 75건

  1. 2007.10.17 WM_KEYDOWN
  2. 2007.10.17 InvalidateRect
  3. 2007.10.17 WM_CHAR
  4. 2007.10.17 SetWindowText
  5. 2007.10.17 MessageBeep
  6. 2007.10.17 MessageBox
  7. 2007.10.17 Rectangle, Ellipse( 그래픽 출력 함수 )
  8. 2007.10.17 DrawText
  9. 2007.10.17 SetPixel, MoveToEx, LineTo
  10. 2007.10.17 wsprintf

WM_KEYDOWN

API Reference 2007. 10. 17. 10:41

WM_KEYDOWN 메시지는 키보드를 누를 때마다 윈도우로 전달되는데 문자가 아닌 모든 키에 대해서도 발생한다. 단 Alt 키와 윈도우 키, 한영 전환 키 등의 특수 키 몇 가지는 제외된다.

이때 wParam 으로는 문자 코드가 아닌 가상 키코드라는 것이 전달된다.



가상 키코드( Virtual Key Code )

시스템에 장착된 키보드의 종류에 상관없이 키를 입력받기 위해 만들어진 범용적인 코드값


VK_BACK( 08 )

Backspace


VK_TAB( 09 )

Tab


VK_RETURN( 0D )

Enter


VK_SHIFT( 10 )

Shift


VK_CONTROL( 11 )

Ctrl


VK_MENU( 12 )

Alt


VK_ESCAPE( 1B )

Esc


VK_SPACE( 20 )

Space


VK_LEFT( 25 )

좌측 커서 이동키


VK_UP( 26 )

위쪽 커서 이동키


VK_RIGHT( 27 )

오른쪽 커서 이동키


VK_DOWN( 28 )

아래쪽 커서 이동키



숫자 및 영문자의 키코드는 아스키 코드와 같으며 매크로 상수는 정의되어 있지 않으므로 문자 상수와 wParam 을 바로 비교하면 된다.


단, 영문자의 경우는 대문자 코드와 일치되어 있으므로 반드시 대문자와 비교해야 한다.


예를 들어 'Z' 키가 눌러졌는지를 알고 싶다면 if( wParam == 'Z' ) 로 비교하면 된다.

Posted by 명혀니
,

InvalidateRect

API Reference 2007. 10. 17. 10:40

BOOL InvalidateRect( HWND hWnd, CONST RECT *lpRect, BOOL bErase );


프로그램의 내부에서 윈도우의 모습을 변경시켰을 때는 변경된 부분을 다시 그리도록 강제로 무효화해야 하며 이때 사용되는 함수가 InvalidateRect 이다.

이 함수는 윈도우의 작업영역을 무효화하여 운영체제로 하여금 WM_PAINT 메시지를 해당 윈도우로 보내도록 한다.



hWnd

무효화의 대상이 되는 윈도우, 즉 다시 그려져야 할 윈도우의 핸들

자기 자신을 무효화 할 때는 WndProc 으로 전달되는 첫 번째 인수  hWnd 를 그대로 써주면 된다.


lpRect

무효화할 사각영역을 지정하되 이 값이 NULL 이면 윈도우의 전 영역이 무효화된다.


bErase

무효화되기 전에 배경을 모두 지운 후 다시 그릴 것인지 아니면 배경을 지우지 않고 그릴 것인지를 지정한다.

이 값이 TRUE 이면 배경을 지운 후 다시 그리고 FALSE 이면 배경을 지우지 않은 채로 다시 그린다.

Posted by 명혀니
,

WM_CHAR

API Reference 2007. 10. 17. 10:39

WM_CHAR 메시지는 입력된 문자의 코드를 wParam 으로 전달하며


TCHAR str[256];

int len;


case WM_CHAR:

    len = lstrlen( str );

    str[len] = ( TCHAR )wParam;

    str[len+1] = 0;

    return 0;


위 코드와 같이 wParam 의 값을 읽어 사용자가 어떤 문자키를 눌렀는지를 알아낸다.

Posted by 명혀니
,

SetWindowText

API Reference 2007. 10. 17. 10:38

윈도우의 타이틀 바에 문자열을 출력하는 함수


타이틀 바는 문자열을 대입해 놓기만 하면 다시 그리는 작업을 하지 않아도 되므로 값을 찍어보는 용도로 아주 편리하다.


SetWindowText( hWnd, str );


윈도우 핸들과 출력할 문자열을 인수로 전달하면 이 문자열이 타이틀 바에 계속 남아 있는다.


타이틀 바에 출력된 문자열을 읽을 때는 GetWindowText 함수를 사용한다.

Posted by 명혀니
,

MessageBeep

API Reference 2007. 10. 17. 10:38

BOOL MessageBeep( UINT uType );


스피커를 통해 간단한 비프음을 출력하는 함수



uType

어떤 종류의 음을 낼 것인가를 지정한다.


0XFFFFFFFF

PC 의 스피커를 통해 음을 낸다.


MB_ICONASTERISK

Asterisk 비프음


MB_ICONEXCLAMATION

Exclamation 비프음


MB_ICONHAND

Hand 비프음


MB_ICONQUESTION

Question 비프음


MB_OK

시스템 디폴트 비프음

Posted by 명혀니
,

MessageBox

API Reference 2007. 10. 17. 10:38

int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType );


조그만 별도의 윈도우를 열어서 사용자에게 정보를 전달하거나 질문을 하는 장치



hWnd

메시지 박스의 오너( Owner ) 윈도우

오너 윈도우란 메시지 박스를 소유한 윈도우를 말하는데 메시지 박스는 화면 중앙에 나타나며 메시지 박스가 떠 있는 동안 오너 윈도우는 사용할 수 없는 상태가 된다.

사용자가 메시지 내용을 완전히 읽고 메시지 박스를 닫아야만 오너 윈도우를 사용할 수 있다.


lpText

메시지 박스에 출력할 문자열


lpCaption

메시지 박스의 타이틀 바에 나타날 제목 문자열


uType

메시지 박스에 어떤 종류의 버튼이 나타날 것인가를 지정하는 여러 가지 플래그


MB_ABORTRETRYIGNORE

Abort, Retry, Ignore 세 개의 버튼이 나타난다.


MB_OK

OK 버튼 하나만 나타난다.


MB_OKCANCEL

OK, Cancel 두 개의 버튼이 나타난다.


MB_RETRYCANCEL

Retry, Cancel 두 개의 버튼이 나타난다.


MB_YESNO

Yes, No 두 개의 버튼이 나타난다.


MB_YESNOCANCEL

Yes, No, Cancel 세 개의 버튼이 나타난다.


아이콘을 출력하는 플래그

버튼 종류 플래그와 아이콘 플래그를 OR 연산자로 연결하여 uType 인수에 지정한다.


MB_ICONEXCLAMATION, MB_ICONWARNING


MB_ICONINFORMATION, MB_ICONASTERISK


MB_ICONQUESTION


MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND



메시지 박스는 전달사항을 단순히 전달하는 용도 외에

사용자에게 질문을 하고 대답을 입력받는 용도로도 사용할 수 있다.

MessageBox 함수는 리턴값으로 사용자가 누른 버튼값을 돌려준다.


IDABORT

Abort 버튼을 눌렀다.


IDCANCEL

Cancel 버튼을 눌렀다.


IDIGNORE

Ignore 버튼을 눌렀다.


IDNO

No 버튼을 눌렀다.


IDOK

Ok 버튼을 눌렀다.


IDRETRY

Retry 버튼을 눌렀다.


IDYES

Yes 버튼을 눌렀다.

Posted by 명혀니
,

BOOL Rectangle( hdc, nLeftRect, nTopRect, nRightRect, nBottomRect );

BOOL Ellipse     ( hdc, nLeftRect, nTopRect, nRightRect, nBottomRect );


사각형을 그리는 Rectangle 함수와 타원을 그리는 Ellipse 함수는 둘 다 인수가 동일하다.


Rectangle 함수는 지정한 두 점 ( Left, Top )과 ( Right, Bottom )을 대각선으로 하는 사각형을 그리며 사각형 내부를 채우기도 한다.


Ellipse 함수는 지정한 사각형에 내접하는 타원을 그린다.



래퍼

( x, y ) 중심에 반지름 r 의 타원을 그리는 함수

void EllipseR( HDC hdc, int x, int y, int r )

{

    Ellipse( hdc, x-r, y-r, x+r, y+r );

}

Posted by 명혀니
,

DrawText

API Reference 2007. 10. 17. 10:35

int DrawText( HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat );


사각영역을 정의하여 영역 안에 문자열을 출력할 수 있으며 여러 가지 포맷을 설정하는 기능이 있다.



lpString

출력할 문자열


nCount

출력할 문자열의 길이이되 이 값이 -1 이면 널 종료 문자열로 간주한다.


lpRect

RECT 구조체의 포인터이며 문자열이 출력될 사각영역을 지정한다.


uFormat

DrawText 함수가 문자열을 출력할 방법을 지정하는 플래그


DT_LEFT

수평 왼쪽 정렬한다.


DT_RIGHT

수평 오른쪽 정렬한다.


DT_CENTER

수평 중앙 정렬한다.


DT_BOTTOM

사각영역의 바닥에 문자열을 출력한다.


DT_VCENTER

사각영역의 수직 중앙에 문자열을 출력한다.


DT_WORDBREAK

사각영역의 오른쪽 끝에서 자동 개행되도록 한다.


DT_SINGLELINE

한 줄로 출력한다.


DT_NOCLIP

사각영역의 경계를 벗어나도 문자열을 자르지 않고 그대로 출력한다.



사각영역을 정의할 때 사용하는 RECT 구조체


typedef struct _RECT {

    LONG left;

    LONG top;

    LONG right;

    LONG bottom;

} RECT;


이 구조체는 왼쪽 위의 좌표와 오른쪽 아래의 좌표를 정의함으로써 직사각형 영역을 나타낸다.

Posted by 명혀니
,

COLORREF SetPixel( hdc, nXPos, nYPos, clrref );


화면에 점을 출력하는 함수

( nXPos, nYPos ) 좌표에 clrref 색상으로 점을 출력한다.



DWORD MoveToEx( hdc, x, y, lpPoint );

BOOL LineTo( hdc, xEnd, yEnd );


선을 그을 때는 MoveTo!Ex 함수와 LineTo 함수를 같이 사용해야 한다.


GDI 는 텍스트 모드의 커서에 해당하는 CP를 항상 유지하는데 LineTo 함수는 CP에서부터 지정한 좌표까지 선을 그으며 CP를 끝점으로 이동시킨다. 그래서 LineTo 함수를 연속적으로 호출하면 계속 이어지는 선을 그을 수 있다.


MoveTo!Ex 는 CP를 지정한 좌표 ( x, y )로 이동시키며 이동 전의 CP 좌표를 lpPoint 에 대입하는데 이전 CP값이 필요치 않을 경우 lpPoint 에 NULL 을 전달하면 된다.



래퍼

void Line( HDC hdc, int x1, int y1, int x2, int y2 )

{

    MoveTo!Ex( hdc, x1, y1, NULL );

    LineTo( hdc, x2, y2 );

}

Posted by 명혀니
,

wsprintf

API Reference 2007. 10. 17. 10:34

int wsprintf( LPTSTR lpOut, LPCTSTR lpFmt, ... );

 

성공할 경우 버퍼로 복사된 문자 개수를 리턴해주되 널 종료 문자는 개수에서 제외된다.

실패할 경우 예상된 출력보다 더 작은 문자수가 리턴되며 이 경우 실패 원인은 GetLastError 로 조사할 수 있다.

 

lpOut

서식화된 출력을 내보낼 문자열 버퍼. 최대 길이는 1024바이트이다.

 

lpFmt

서식 문자열이며 일반 문자열 사이에 %로 시작되는 서식을 포함할 수 있다.

 

...

서식 문자열내의 서식과 대응될 변수들. 서식의 개수만큼 변수를 제공해야 한다.

 

 

wsprintf 는 API 함수이므로 용량상의 불이익이 없고 유니코드를 지원한다는 장점이 있기는 하지만 실수를 서식화 할 수 없고 버퍼 길이가 1024까지만 지원되는 단점이 있다.

실수는 sprintf 표준 함수나 유니코드 버전의 swprintf 를 사용해야 한다.

Posted by 명혀니
,