모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    토왕님의
    개인페이지입니다
    가입 : 15-09-16
    방문 : 36회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_14862
    작성자 : 토왕
    추천 : 0
    조회수 : 710
    IP : 122.44.***.75
    댓글 : 1개
    등록시간 : 2015/12/08 18:03:19
    http://todayhumor.com/?programmer_14862 모바일
    [본삭금] api 소스 관련 질문 드립니다 ..
    옵션
    • 본인삭제금지
     // Hello.cpp
    //
    // 간단한 메시지를 화면에 출력하는 프로그램입니다.




    #include <windows.h> // 윈도우즈 프로그램을 작성하는데 필요한 구조체,
    // 각종 API 함수, 매크로, 메시지 등이 선언된 헤더 파일로
    // 윈도우즈 프로그램에 반드시 포함해야 합니다.

    #include <time.h>
    #include "resource.h"

    //////////////   윈도우 프로시져 선언   ///////////////////////////////////// 
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    LRESULT CALLBACK MakeProc(HWND, UINT, WPARAM, LPARAM);

    void F_suk(); //석는 함수

    HINSTANCE hInst;
    HWND hWnd_Make;
    int Show;

    struct
    {
    int num; //짝이맞는 그림숫자 2개씩있음
    int value; //그림의 상태를 나타내는 값
    int x;
    int y;
    } Pic[25], temp; //그림 봐꿔줄때의 변수



    // 윈도우 프로시져(Window Procedure)에 대한 선언

    // WinMain() : 윈도우즈 어플리케이션의 진입점(entry point)
    // 여기서 프로그램이 시작한다. 
    // 콘솔기반 C프로그램의 main()에 해당한다.
    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
    int nCmdShow)
    {
    Show = nCmdShow; //차일드 윈도우를 보여주기 위한 상태값
    static char szClassName[] = "그림맞추기";     // 윈도우 클래스 이름
    static char szTitle[] = "그림맞추기";    // 타이틀 바에 출력될 문자열

    MSG         msg;   // 메시지 구조체
    HWND        hWnd;  // 윈도우 핸들
    WNDCLASSEX    wc;    // 윈도우클래스 구조체 
    hInst = hInstance;


    //////////////////// (1) 윈도우클래스 구조체에 값을 지정한다. ////////////////////
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;         // 클래스 스타일
    // 윈도우 프로시져를 윈도우클래스 구조체에 등록 
    wc.lpfnWndProc = WndProc;                             // 윈도우 프로시저 지정
    wc.cbClsExtra = 0;                                   // 윈도우클래스 데이터 영역
    wc.cbWndExtra = 0;                                   // 윈도우의 데이터 영역
    wc.hInstance = hInstance;                           // 인스턴스 핸들
    wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));      // 아이콘 핸들
    wc.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR1));          // 사용할 커서 핸들
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 바탕색 브러쉬 핸들
    wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);          // 메뉴 이름            
    wc.lpszClassName = szClassName;                         // 윈도우 클래스 이름              
    wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));

    ///////////////////// (2) 윈도우 클래스를 등록한다. //////////////////////////////

    RegisterClassEx(&wc); // 윈도우 클래스를 등록
     //차일드 윈도우
    wc.lpfnWndProc = MakeProc;
    wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    wc.lpszClassName = "Make";
    wc.lpszMenuName = NULL;

    RegisterClassEx(&wc);

    ///////////////////// (3) 프레임 윈도우를 생성한다. //////////////////////////////

    hWnd = CreateWindow(
    szClassName,           // 윈도우 클래스 이름
    szTitle,               // 타이틀 바에 출력될 문자열 
    WS_OVERLAPPEDWINDOW,   // 윈도우 스타일
    CW_USEDEFAULT,         // 윈도우의 좌측 상단의 X좌표
    CW_USEDEFAULT,         // 윈도우의 좌측 상단의 Y좌표
    420,         // 윈도우의 폭
    370,         // 윈도우의 높이
    NULL,                  // 부모 윈도우의 핸들
    NULL,                  // 메뉴 혹은 자식 윈도우의 식별자
    hInstance,             // 윈도우를 생성한 인스턴스 핸들
    NULL                   // CREATESTRUCT 구조체를 통해 전달되는 값
    );

    if (!hWnd)          // 윈도우 생성에 실패하면 
    return(FALSE);    // 프로그램을 종료한다.

     ////////////////////// (4) 프레임 윈도우를 화면에 나타낸다.////////////////////////

    ShowWindow(hWnd, nCmdShow);  // 윈도우를 화면에 나타낸다.
    UpdateWindow(hWnd);          // 윈도우의 클라이언트 영역을 칠합니다.        

    /////// (5) 메시지 루프:루프를 돌며 메시지 큐로 부터 메시지를 얻어와 처리한다.//////

    while (GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg); // 키보드 메시지를 번역
    DispatchMessage(&msg);  // 메시지를 해당 윈도우 프로시져로 보낸다.
    }
    return msg.wParam;
    }


    /////////////////////// 윈도우 프로시져 (Window Procedure) ////////////////////////// 

    ////////////////  윈도우 프로시져함수의 정의부분  ///////////////////////////////////
    LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {

    HDC hdc, MemDC;
    static int tim, red;
    PAINTSTRUCT ps;
    HBITMAP NewBitmap, OldBitmap;
    static char str[30],temp[50];
    static int width = 41, height = 64;
    static int button = 0, swit = 0; //버튼은 클릭상태를 나타내는것 swit는 누를때 2번기회를 나타내는 것
    static int compare[2][2]; // 그림이 같은가 안 같은가를 비교..
     // [swit][0] --> 그림의 짝이 맞는 숫자
     // [swit][1] --> 그림의 위치 번호  
    static int count = 0, clear; // count는 클릭한 횟수, clear는 짝이 맞은 횟수
    static int i, j, k;


    static POINT point;

    switch (uMsg) {
    case WM_CREATE:

    SetTimer(hWnd, 1, 1000, NULL); //  셋 타이머 함수 
    SetTimer(hWnd, 2, 300000, NULL);

    srand((unsigned)time(NULL));  // 랜덤 함수의 시간에 따른 랜덤화
    for (i = 0; i < 3; i++)
    {
    for (j = 0; j < 4; j++)
    {
    for (k = 0; k< 2; k++)
    {
    Pic[(i * 4 + j) * 2 + k].num = i * 4 + j + 1;
    Pic[(i * 4 + j) * 2 + k].x = j * width;
    Pic[(i * 4 + j) * 2 + k].y = i * height;
    Pic[(i * 4 + j) * 2 + k].value = 0;
    }
    }
    }
    Pic[24].num = 25, Pic[24].x = 0, Pic[24].y = 3 * height;
    F_suk();
    break;
    case WM_TIMER:
    swicth(wParam) {
    case 1:
    if (red > 255) red = 255;
    wsprintf(temp, "현재경과시간은=%3d입니다.", tim++);
    hdc = GetDC(hWnd);
    SetTextColor(hdc, RGB (red++, 0, 0));
    TextOut(hdc, 20, 20, temp, strlen(temp));
    ReleaseDC(hWne, hdc);
    break;
    case 2:    
    MessageBeep(MB_OK);
    red = 0;
    tim = 0;
    break;
    }
    break;


    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    MemDC = CreateCompatibleDC(hdc);  //1
    NewBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));//2
    OldBitmap = (HBITMAP)SelectObject(MemDC, NewBitmap);//3


    //x=bit.bmWidth; y=bit.bmHeight;

    for (i = 0; i < 4; i++)
    for (j = 0; j < 6; j++)
    {
    if (button)
    {
    if (j * 70 < point.x && i * 70 < point.y
    && j * 70 + width >= point.x && i * 70 + height >= point.y)  // 마우스 포인터의 위치가 그림에 있냐? 
    {

    compare[swit][0] = Pic[i * 6 + j].num;
    compare[swit][1] = i * 6 + j;
    swit++;

    Pic[i * 6 + j].value = 1;
    }
    }
    if (Pic[i * 6 + j].value) BitBlt(hdc, j * 70 + 10, i * 70 + 10, width + 1, height + 1, MemDC, Pic[i * 6 + j].x, Pic[i * 6 + j].y, SRCCOPY);
    else BitBlt(hdc, j * 70 + 10, i * 70 + 10, width + 1, height + 1, MemDC, Pic[24].x, Pic[24].y, SRCCOPY);
    }
    button = 0;

    if (swit == 2)
    {
    swit = 0;
    if (compare[0][0] != compare[1][0]) // 전 그림과 지금 그림을 비교해서 맞지 않으면 
    {
    Pic[compare[0][1]].value = 0;  // 뒤집어버린다..
    Pic[compare[1][1]].value = 0;
    }
    count++;
    }

    clear = 0;
    for (i = 0; i<24; i++)
    {
    if (Pic[i].value == 1) clear++;
    }
    if (clear == 24)
    {
    if (count < 20) MessageBox(hWnd, "당신은 천재일지도.. ^_^", "클리어~!!", NULL);
    else if (count < 30) MessageBox(hWnd, "참 잘했어요", "클리어~!!", NULL);
    else if (count < 40) MessageBox(hWnd, "좀 더 분발하시길..", "클리어..", NULL);
    else MessageBox(hWnd, "당신은 바보??  -_-;; ", "...", NULL);
    PostQuitMessage(0);
    }

    wsprintf(str, "실행 횟수 : %d", count);
    TextOut(hdc, 310, 300, str, strlen(str));

    SelectObject(MemDC, OldBitmap);
    DeleteObject(NewBitmap);
    DeleteDC(MemDC);
    EndPaint(hWnd, &ps);
    break;


    case WM_LBUTTONDOWN:
    button = 1;
    point.x = LOWORD(lParam);
    point.y = HIWORD(lParam);
    InvalidateRect(hWnd, NULL, FALSE);
    break;
    case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case ID_SUK:
    F_suk();
    count = 0;
    swit = 0;
    InvalidateRect(hWnd, NULL, FALSE);
    break;
    case ID_END:
    MessageBox(hWnd, "다음에 봅시다 ^^;", "안녕~", NULL);
    PostQuitMessage(0);
    break;
    case ID_MAKE:

    hWnd_Make = CreateWindow("Make",
    "만든이",
    WS_OVERLAPPEDWINDOW,
    200,
    200,
    200,
    200,
    hWnd,
    NULL,
    hInst,
    NULL);
    ShowWindow(hWnd_Make, Show);
    break;

    }
    break;

    case WM_DESTROY:
    KillTimer(hWnd, 1);
    KillTimer(hWnd, 2);// 프로그램에 종료 메시지가 온 경우
    PostQuitMessage(0); // WM_CLOSE메시지를 발생시켜 메시지루프를 중단한다.
    break;

    default:             // 처리하지 않은 메시지는 
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
    // DefWindowProc()가 처리하도록 합니다.
    }
    return 0;
    }

    제가 그림맞추기 게임을 수정해보려고 원래 있던 소스에 이제 큰,작은 아이콘  마우스 커서  랑 타이머 기능을 추가 하려고했는데요 
    책에 있는데로 했는데  잘안되네요 ..  어느 부분이 문제인지 알수 있을까요 ? 
    aaa.JPG

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    7
    c언어나 다른 프로그래밍언어 소스 보는곳 .. [2] 본인삭제금지 토왕 16/05/12 21:07 55 0
    6
    혹시 파워빌더 관련해서 여기다가 물어봐도 되나요 ... [7] 본인삭제금지 토왕 16/04/01 21:05 33 0
    [본삭금] api 소스 관련 질문 드립니다 .. [1] 본인삭제금지 토왕 15/12/08 18:03 20 0
    4
    리눅스 명령어 ㅠㅠ [14] 본인삭제금지 손만수르 15/10/21 13:41 56 0
    3
    리눅스 명령어 ..... [3] 손만수르 15/10/21 13:09 74 0
    2
    visual studio 2013 버젼 실행 질문있습니다! [2] 손만수르 15/09/22 19:06 23 0
    1
    visual studio 설치하고 실행 질문있습니다 ㅠㅠ [3] 손만수르 15/09/16 21:06 17 0
    [1] [2]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈