▶ 뭉충닷컴
 
mungchung.com login
Site Search
My Space
주절주절...
공부방
쥔장소개
Board
자유게시판
유용한 정보
자료실
Programming
강좌 & Articles
Spring 3.0
프로그래밍 Tip
   -ASP
   -PHP
   -JavaScript
   -HTML
   -Java/JSP
   -Database
   -Crystal Report
   -Visual Basic
   -이클립스
   -리눅스
   -기타
Windows API (VB)
Spread Sheet 7.0
컴퓨터활용 Tip
Other things
StarCraft 전략
StarCraft 문서
김용(金庸)
Son Q & Dieda

[C++ Study] Click Count, Toggle, Move String

기타 조회 수 7384 추천 수 0 2004.06.29 00:18:07
뭉충닷컴 *.92.117.106
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
        char temp[80];
        PAINTSTRUCT ps;
        HDC hdc;
        static int count;
        switch(uMsg)
        {
        case WM_CREATE:
                count = 0;
                break;
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);
                sprintf(temp, "Count = %d", count);
                TextOut(hdc, 50, 50, temp, strlen(temp));
                EndPaint(hWnd, &ps);
                break;
        case WM_LBUTTONDOWN:
                count++;
                InvalidateRect(hWnd,NULL,TRUE);
                break;
        case WM_RBUTTONDOWN:
                count--;
                InvalidateRect(hWnd,NULL,TRUE);
                break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        }
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
}




#include <stdio.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
        char temp[80];
        PAINTSTRUCT ps;
        HDC hdc;
        static int count;
        static int m_bFlag;
        switch(uMsg)
        {
        case WM_CREATE:
                count = 0;
                m_bFlag= 1;
                break;
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);
                if(m_bFlag)
                    strcpy(temp,"Toggle");
                else
                    strcpy(temp,"");

                TextOut(hdc, 50, 50, temp, strlen(temp));
                EndPaint(hWnd, &ps);
                break;
        case WM_LBUTTONDOWN:
                m_bFlag = !m_bFlag;
                // 화면을 즉각즉각 재출력을 해주는 함수(자주쓰이는 함수)
                InvalidateRect(hWnd,NULL,TRUE);
                break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        }
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
/*

  Data를 Toggle하는 방법
  1. 1,0 toggle
        int flag = 1;
        flag = 1 - flag (flag = !flag)
  2. 1,-1 toggle
        int flag = 1;
        flag = flag*-1 (flag *= -1)
  3. 0,1,2 순차적으로 반복하는 round toggle
        int flag = 0;
        flag++;
        flag %= 3;


  변수이름에 m_을 표시하는 이유
    Member변수라는 뜻이다. 이는 class로 프로그램을 작성할때 주로 사용하는
    Naming Rule이며, MFC프로그래밍 스타일의 습관을 그대로 따랐다.
  */
  
  
  

#include <stdio.h>
POINT CenterPoint(RECT& r);
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
        PAINTSTRUCT ps;
        HDC hdc;

        static char     m_Str[80];
        static POINT    m_Point;
        static RECT     m_Bound;

        switch(uMsg)
        {
        case WM_CREATE:
                strcpy(m_Str, "Catch me~~");
                GetClientRect(hWnd, &m_Bound);
                m_Point = CenterPoint(m_Bound);
                // string 길이의 반만큼 옆으로 가도록 함
                m_Point.x -= (strlen(m_Str)*8)/2;
                break;
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);
                TextOut(hdc, m_Point.x, m_Point.y, m_Str, strlen(m_Str));
                EndPaint(hWnd, &ps);
                break;
        case WM_LBUTTONDOWN:
                m_Point.x -= 20;
                InvalidateRect(hWnd,NULL,TRUE);
                break;
        case WM_RBUTTONDOWN:
                m_Point.x += 20;
                InvalidateRect(hWnd,NULL,TRUE);
                break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        }
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
POINT CenterPoint(RECT& r)
{
    POINT p;
    p.x = (r.left + r.right)/2;
    p.y = (r.top + r.bottom)/2;
    return p;
}


/*
  <windef.h>에 보면 다음과 같이 선언
  typedef struct tagPOINT
  {
    LONG x;
    LONG y;
  } POINT;
  typedef struct tagRECT
  {
    LONG left;
    LONG top;
    LONG right;
    LONG bottom;
  } RECT;

  BOOL GetClientRect {
    HWND hWnd,      // handle to window
    LPRECT lpRect   // address of structure for client coordinates
  }

  *) 윈도우 타이틀바를 제외한 전체 영역을 client area 라한다. 이 client area를
     갖다주는 함수가 GetClientRect 함수이다.
  *) 좌표는 언제나 POINT 타입으로 표현된다.
  *) GetTextMetrics() 함수는 시스템 폰트의 크기를 알수있다.

  */
문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 공부하는 곳 -_-; [2] 뭉충닷컴 2002-09-22 10663

토비의 스프링

웹사이트 최적화 기법 file [1]

기타 아파치 튜닝 [1]

기타 아파치 설정 httpd.conf

Intercepting Filter 패턴

Core J2EE Pattern file

기타 [C++ Study] Timer 사용 [3]

기타 [C++ Study] Click Count, Toggle, Move String

기타 [C++ Study] WinMain와 WinProc

기타 C# Pattern - Simple Pattern

기타 1. abex3 크랙 설명서

기타 어셈 강좌 1, 2장 정리

기타 SoftICE 4.05 설치 & 간단한 사용법

기타 5. Overloading, Overriding, Runtime Type and 객체지향

기타 4. Flow 통제와 예외 처리(Exception Handling)

기타 3. 연산자와 지정

기타 2. 선언과 엑서스 제어

기타 1. 자바언어의 기본

기타 Parameter 을 asp 처럼 사용하게 만든 class