1580, 1/79 회원가입  로그인  
   승리의박성환
   C언어로 만든 그래픽 프로그램

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=267 [복사]


C언어는 무한한 언어입니다. 잘 배우시면 좋습니다.

-------------------------

#include <windows.h>

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

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;
        static int x;
        static int y;
        static BOOL bnowDraw=FALSE;
        switch(iMessage) {
        case WM_LBUTTONDOWN:
                x=LOWORD(lParam);
                y=HIWORD(lParam);
                bnowDraw=TRUE;
                return 0;
        case WM_MOUSEMOVE:
                if (bnowDraw==TRUE) {
                        hdc=GetDC(hWnd);
                        MoveToEx(hdc,x,y,NULL);
                        x=LOWORD(lParam);
                        y=HIWORD(lParam);
                        LineTo(hdc,x+1,y+2);
                        LineTo(hdc,x+2,y+3);
                        LineTo(hdc,x-1,y-2);
                        LineTo(hdc,x-2,y-3);
                        LineTo(hdc,y+1,x+2);
                        LineTo(hdc,y+2,x+3);
                        LineTo(hdc,y-1,x-2);
                        LineTo(hdc,y-2,x-3);
                        LineTo(hdc,x+2,y+1);
                        LineTo(hdc,x+3,y+2);
                        LineTo(hdc,x-2,y-1);
                        LineTo(hdc,x-3,y-2);
                        LineTo(hdc,y+2,x+1);
                        LineTo(hdc,y+3,x+2);
                        LineTo(hdc,y-2,x-1);
                        LineTo(hdc,y-3,x-2);
                        ReleaseDC(hWnd,hdc);
                }
                return 0;
        case WM_LBUTTONUP:
                bnowDraw=FALSE;
                return 0;
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
        }
        return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

----------------------------------------

상당히 API 중 쉬운 부분만 다루었고 메시지 부분도 쉬운 메시지만

처리하였습니다. 얼마든지 수정해서 알아보세요. 여기서 그래픽에 관련된 소스는


if (bnowDraw==TRUE) {
                        hdc=GetDC(hWnd);
                        MoveToEx(hdc,x,y,NULL);
                        x=LOWORD(lParam);
                        y=HIWORD(lParam);
                        LineTo(hdc,x+1,y+2);
                        LineTo(hdc,x+2,y+3);
                        LineTo(hdc,x-1,y-2);
                        LineTo(hdc,x-2,y-3);
                        LineTo(hdc,y+1,x+2);
                        LineTo(hdc,y+2,x+3);
                        LineTo(hdc,y-1,x-2);
                        LineTo(hdc,y-2,x-3);
                        LineTo(hdc,x+2,y+1);
                        LineTo(hdc,x+3,y+2);
                        LineTo(hdc,x-2,y-1);
                        LineTo(hdc,x-3,y-2);
                        LineTo(hdc,y+2,x+1);
                        LineTo(hdc,y+3,x+2);
                        LineTo(hdc,y-2,x-1);
                        LineTo(hdc,y-3,x-2);
                        ReleaseDC(hWnd,hdc);
                }
                return 0;

이것이니까 여기를 잘 고쳐보세요. 숫자만 고치거나 변수를 따로 만들어도

괜찮습니다.


그림 :

---------


  Hit : 18253     Date : 2005/04/22 05:05



    
nsh009 브라보 2005/04/24
pkg61 어떤건지 보구 싶었는데 컴파일이 안되네요...;; 그냥 한번 어떤건지 보고싶었는데... 2005/06/12  
tmma 음.. 한번해볼까 그래픽이라 관심은 없는데.. 2005/06/26  
rkqldhd 멋있네요~ 2005/07/29  
kamijyo 컴파일이 안되는대 2005/07/30  
greatjino 컴파일 안대는대.. 2005/08/13  
sjun3 api 설명 하시는거? api는 c언어에 속해있긴 하지만;; 2005/08/24  
vdiablo2v int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance 줄에서 에러가..;; 2005/09/22
... 윈도우창 하나 만드는데 엄청나게 길게 써야 하던데... ㅜ 2005/10/03
mati 윈도우 콘솔환경에서 컴파일하셔야됩니다. 2006/12/01  
AstroBoy API군요 2009/04/02  
     [공지] 강좌를 올리실 때는 말머리를 달아주세요^ㅡ^ [29] 멍멍 02/27 18277
1579   리눅스 커널 2.6 버전 이후의 LKM     jdo
07/25 209
1578   쉘코드 모음     해킹잘하고싶다
01/15 952
1577   Call by value VS Call by Reference     해킹잘하고싶다
01/15 436
1576   (꼼수) L.O.B 한방에 클리어하기[1]     해킹잘하고싶다
01/14 631
1575   towelroot.c (zip) 코멘팅.[1]     scube
08/18 3156
1574   levitator.c (안드로이드 루팅) 공격 분석 소스 코드 공유.[4]     scube
08/17 3165
1573   무료 정보보안 기술인재 양성 과정 교육생 모집     chanjung111
06/17 3918
1572   K-Shield 주니어 5기 모집     lrtk
06/17 3639
1571   [팁] 파이썬 2소스를 3으로 변경해주는 사이트[3]     한승재
05/13 3401
1570   구글 백링크 작업 질문요     wkatnxka
03/30 2933
1569   [팁] 우분투 미러링서버     한승재
03/09 3533
1568 비밀글입니다  감을못잡겠네요ㅜㅜ     잉잉잉
01/15 3
1567   데비안 계열 리눅스 의존성 깨졌을때 해결법     한승재
11/27 3945
1566   홍보합니다. 신생 보안커뮤니티입니다.     kimwoojin0952
10/26 3816
1565   신기한 프로그래밍 언어[3]     koreal33t
09/06 4166
1564   윈도우,리눅스에서 내 ip를 확인해 보자 [1]     koreal33t
09/06 3405
1563   CTF 사이트[1]     koreal33t
09/06 3981
1562   자격증 (문제)사이트 [2]     koreal33t
09/06 3849
1561   [퍼온글]리눅스 기본 명령어     한승재
06/06 4517
1 [2][3][4][5][6][7][8][9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com