본문 바로가기

Windows/Windows API

GraphOut, MessageBox

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="GraphOut";

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
         ,LPSTR lpszCmdParam,int nCmdShow)
{
    HWND hWnd;
    MSG Message;
    WNDCLASS WndClass;
    g_hInst=hInstance;
    
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hInstance=hInstance;
    WndClass.lpfnWndProc=(WNDPROC)WndProc;
    WndClass.lpszClassName=lpszClass;
    WndClass.lpszMenuName=NULL;
    WndClass.style=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&WndClass);

    hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
         CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
         NULL,(HMENU)NULL,hInstance,NULL);
    ShowWindow(hWnd,nCmdShow);
    
    while(GetMessage(&Message,0,0,0)) {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
    }
    return Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    switch(iMessage) {
    case WM_PAINT:
        hdc=BeginPaint(hWnd,&ps);
        // MoveToEx 함수로 CP를 (A,B) 좌표로 이동시킨 후 LineTo 함수를 호출하면 현재 좌표인
        // (A,B)에서 LineTo 함수의 인수로 전달된 (C,D) 좌표로 선이 그어진다.
        MoveToEx(hdc,150,150,NULL);
        LineTo(hdc,180,200);

        // Rectangle 함수와 Ellipse 함수는 둘 다 인수가 동일하다. Rectangle 함수는 지정한
        // 두 점 (Left, Top)과 (Right, Bottom)을 대각선으로 하는 사각형을 그리는데 도스
        // 에서와는 달리 사각형의 내부를 채운다는 점만 주의하도록 하자. Ellipse 함수는
        // 지정한 사각형에 내접하는 타원을 그린다.
        Rectangle(hdc,200,100,250,180);
        Ellipse(hdc,200,200,250,280);

        EndPaint(hWnd,&ps);
        return 0;
    case WM_LBUTTONDOWN:
        // 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 세 개의 버튼이 나타난다.
        //
        // MessageBox 함수는 리턴값으로 사용자가 누른 버튼값을 돌려준다.
        // IDABORT Abort버튼을 눌렀다.
        // IDCANCEL Cancel 버튼을 눌렀다.
        // IDIGNORE Ignore 버튼을 눌렀다.
        // IDNO No버튼을 눌렀다.
        // IDOK OK 버튼을 눌렀다.
        // IDRETRY Retry 버튼을 눌렀다.
        // IDYES Yes 버튼을 눌렀다.
        MessageBox(hWnd, "마우스 왼쪽 버튼을 눌렀습니다","메시지 박스",MB_OK);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

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

TextOut (글자를 가운데에 위치시키기)  (0) 2013.10.01
마우스 오버 이벤트 (Mouse Over)  (0) 2013.10.01
DrawText  (0) 2013.10.01
TextOut  (0) 2013.10.01
crc check source | 펌 개발자료 2004/12/08 11:54  (0) 2013.10.01