▶ 뭉충닷컴
 
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

기타 조회 수 7360 추천 수 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 10642
31 토비의 스프링 뭉충닷컴 2011-03-28 3910
30 웹사이트 최적화 기법 file [1] 뭉충닷컴 2009-08-10 7147
29 기타 아파치 튜닝 [1] 뭉충닷컴 2009-08-03 7743
28 기타 아파치 설정 httpd.conf 뭉충닷컴 2009-08-03 5366
27 Intercepting Filter 패턴 뭉충닷컴 2009-06-17 7068
26 Core J2EE Pattern file 뭉충닷컴 2009-06-16 6547
25 기타 [C++ Study] Timer 사용 [3] 뭉충닷컴 2004-06-29 8529
» 기타 [C++ Study] Click Count, Toggle, Move String 뭉충닷컴 2004-06-29 7360
23 기타 [C++ Study] WinMain와 WinProc 뭉충닷컴 2004-06-28 8730
22 기타 C# Pattern - Simple Pattern 뭉충닷컴 2004-03-17 6235
21 기타 1. abex3 크랙 설명서 뭉충닷컴 2004-03-12 7003
20 기타 어셈 강좌 1, 2장 정리 뭉충닷컴 2004-03-12 7696
19 기타 SoftICE 4.05 설치 & 간단한 사용법 뭉충닷컴 2004-03-12 9114
18 기타 5. Overloading, Overriding, Runtime Type and 객체지향 뭉충닷컴 2003-12-02 6485
17 기타 4. Flow 통제와 예외 처리(Exception Handling) 뭉충닷컴 2003-11-05 6006
16 기타 3. 연산자와 지정 뭉충닷컴 2003-11-03 6624
15 기타 2. 선언과 엑서스 제어 뭉충닷컴 2003-11-03 5916
14 기타 1. 자바언어의 기본 뭉충닷컴 2003-11-03 5797
13 기타 Parameter 을 asp 처럼 사용하게 만든 class 뭉충닷컴 2003-11-03 6677