1579, 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 : 16537     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  
1579     [re] 추가 설명[9]     暴走天使
09/11 8676
1578   부산에서 같이 공부 할 분 있어요?ㅋㅋ[4]     연산동고래
01/16 6548
1577   [자작] C언어 War Game Release 04.01 < Solution > 10진수      우느님
04/12 5721
1576   [자작] C언어 War Game Release 04.01 < 상금 : 50000원 >[11]     우느님
04/01 5606
1575   [자작] C언어 War Game Release 04.01 < Solution > 16진수     우느님
04/11 5366
1574   [자작]c언어 <포인터> 캐쉽게 설명해드려요~ 3 (수정)[8]     우느님
01/07 5223
1573   [자작]c언어 <포인터> 캐쉽게 설명해드려요~ 2[5]     우느님
01/07 5211
1572   [자작]적절한 네트워크 정리[1]     우느님
01/03 5560
1571   [자작]c언어 <포인터> 캐쉽게 설명해드려요~[6]     우느님
01/07 5294
1570   [자작] 왜 Little Endian 인가 ?[6]     우느님
03/09 5469
1569   하드웨어와 소프트웨어...그리고 불가능한일?[16]     아이프리드
01/11 7925
1568   [Project] 전기,전자 상식 및 샤프심으로 전구만들기. - 3[16]     아이프리드
02/03 11071
1567   [Project] 전기,전자 상식 및 샤프심으로 전구만들기. - 2     아이프리드
02/03 8077
1566   [Project] 전기,전자 상식 및 샤프심으로 전구만들기. - 1[11]     아이프리드
02/03 9872
1565   #01 Protel CAD - 서문     아이프리드
11/21 8868
1564   [자작] C언어 변수 이해하기[9]     싫어 내가할꺼야
02/13 7190
  C언어로 만든 그래픽 프로그램[11]     승리의박성환
04/22 16536
1562   리눅스 설치 + Windows설치(생초보에게 좋은 강좌)!![3]     승리의박성환
04/15 12705
1561   밑에 제가 올린 API 소스에 대해서.........     승리의박성환
10/02 6974
1560   NET SEND 명령강좌[8]     서덕진
09/23 5367
1 [2][3][4][5][6][7][8][9][10]..[79]

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