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

  1. 2007.10.17 CreateWindow
  2. 2007.10.17 RegisterClass
  3. 2007.10.17 WNDCLASS
  4. 2007.10.17 WinMain
  5. 2007.10.17 마우스 이벤트를 감지하는 콘솔

CreateWindow

API Reference 2007. 10. 17. 10:27

HWND CreateWindow( lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight,
   hwndParent, hmenu, hinst, lpvParam );


윈도우 클래스를 등록한 후 이 윈도우 클래스를 기본으로 실제 윈도우를 생성하는 함수

CreateWindow 함수는 윈도우에 관한 모든 정보를 메모리에 만든 후 윈도우를 대표하는 번호인 윈도우 핸들을 리턴한다.

넘겨지는 윈도우 핸들은 hWnd 라는 변수에 저장되었다가 이 윈도우를 참조하는 모든 함수의 인수로 사용된다.


lpszClassName
생성하고자 하는 윈도우의 클래스를 지정하는 문자열


lpszWindowName
윈도우의 타이틀 바에 나타날 문자열


dwStyle
만들고자 하는 윈도우의 형태를 지정하는 인수


X, Y, nWidth, nHeight
윈도우의 크기와 위치를 지정하며 픽셀 단위를 사용한다.
CW_USEDEFAULT 를 사용하면 운영체제가 화면 크기에 맞게 적당한 크기와 위치를 알아서 설정한다.


hWndParent
부모 윈도우가 있을 경우 부모 윈도우의 핸들을 지정
자신이 최상위 윈도우일 경우 이 값을 NULL 로 지정하면 데스트 탑을 부모로 가진다.


hmenu
윈도우에서 사용할 메뉴의 핸들을 지정
이 인수로 지정된 메뉴는 현재 CreateWindow 함수로 만들어지는 윈도우에서만 사용된다.


hinst
윈도우를 만드는 주체, 즉 프로그램의 핸들을 지정


lpvParam
CREATESTRUCT 구조체의 번지이며 여러 개의 윈도우를 만들 때 각 윈도우에 고유의 파라미터를 전달하는 특수한 목적에 사용되며 보통 NULL 값을 사용

Posted by 명혀니
,

RegisterClass

API Reference 2007. 10. 17. 10:26

ATOM RegisterClass( CONST WNDCLASS *lpWndClass );


인수로 WNDCLASS 구조체의 번지를 전달하여 윈도우 클래스를 등록한다.

Posted by 명혀니
,

WNDCLASS

API Reference 2007. 10. 17. 10:26

typedef struct tagWNDCLASS
{
    UINT  style;
    WNDPROC  lpfnWndProc;
    int   cbClsExtra;
    int   cbWndExtra;
    HINSTANCE hInstance;
    HICON  hIcon;
    HCURSOR  hCursor;
    HBRUSH  hbrBackground;
    LPCSTR  lpszMenuName;
    LPCSTR  lpszClassName;
};


style
윈도우의 스타일을 정의( 윈도우가 어떤 형태를 가질 것인가를 지정하는 멤버 )
CS_HREDRAW | CS_VREDRAW;
윈도우의 수직( 또는 수평 ) 크기가 변할 경우 윈도우를 다시 그린다는 뜻


lpfnWndProc
윈도우의 메시지 처리 함수를 지정


cbClaExtra, cbWndExtra
윈도우즈가 내부적으로 사용하며 아주 특수한 목적에 사용되는 여분의 공간


hInstance
윈도우 클래스를 등록하는 프로그램의 번호


hIcon, hCursor
윈도우가 사용할 마우스 커서와 아이콘을 지정


hbrBackground
윈도우의 배경 색상을 채색할 브러시를 지정


lpszMenuName
프로그램이 사용할 메뉴를 지정
메뉴는 프로그램 코드에서 실행중에 만드는 것이 아니라 리소스 에디터에 의해 별도로 만들어져 링크시에 같이 합쳐진다.


lpszClassName
윈도우 클래스의 이름을 문자열로 정의한다.
여기서 지정한 이름은 CreateWindow 함수에 전달되며 CreateWindow 함수는 윈도우 클래스에서 정의한 특성값을 참조하여 윈도우를 만든다

Posted by 명혀니
,

WinMain

API Reference 2007. 10. 17. 10:25

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow );


프로그램의 시작점( Entry Point )


hInstance

프로그램의 인스턴스 핸들


hPrevInstance

바로 앞에 실행된 현재 프로그램의 인스턴스 핸들


lpszCmdParam

명령행으로 입력된 프로그램 인수, 도스의 argv인수에 해당하며 실행 직후에 열 파일의 경로가 전달


nCmdShow

프로그램이 실행될 형태이며 최소화, 보통 모양 등이 전달

Posted by 명혀니
,

#include <windows.h>
#include <iostream>


int main(int argc, char *argv[])
{
    INPUT_RECORD rec;
    DWORD dwRead;
   
    HANDLE hCout = GetStdHandle(STD_OUTPUT_HANDLE);
    HANDLE hCin  = GetStdHandle(STD_INPUT_HANDLE);
   
    std::cout << "마우스를 클릭하면 *이 찍히는 프로그램\n"
                 "[종료하려면 아무키나 누르면 될 겁니다]";
   
    while(ReadConsoleInput(hCin, &rec, 1, &dwRead)) {
        // 만약 Mouse Event가 발생하여
        if(rec.EventType == MOUSE_EVENT) {
            // Mouse Click일 경우엔 별을 찍는다
            if(rec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
                // 우선 커서 위치를 마우스가 클릭된 곳으로 이동
                SetConsoleCursorPosition(hCout, rec.Event.MouseEvent.dwMousePosition);
                std::cout << '*';
            }
        } else if(rec.EventType == KEY_EVENT) break;
    }
   
    return 0;
}

Posted by 명혀니
,