'타이머'에 해당되는 글 8건

  1. 2010.07.18 WinApi 두개의 타이머
  2. 2010.07.18 WinApi 타이머 확장 문제.
posted by nsakura 2010. 7. 18. 20:31

잠깐 언급을 했던것 같은데. 타이머를 여러개 설치가 가능하다.고 언급을 했었다.

타이머의 ID를 각기 다르게 주면어서 생성하면 되는데 그렇다 하더라도

WM_TIMER는 하나이다.

타이머의 구분은  wParam으로 전달되는 타이머 아이디로 구분한다.

그럼 소스를 보도록 하자.

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HINSTANCE g_Inst;

LPCTSTR wndname=TEXT("GFP TWO TIMER");

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
 HWND hWnd;
 MSG Message;
 WNDCLASS WndClass;
 g_Inst=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;
 WndClass.lpszClassName=wndname;
 WndClass.lpszMenuName=NULL;
 WndClass.style=CS_HREDRAW|CS_VREDRAW;
 RegisterClass(&WndClass);

 hWnd=CreateWindow(wndname,wndname,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);

 ShowWindow(hWnd,nShowCmd);

 while(GetMessage(&Message,NULL,0,0)){
  TranslateMessage(&Message);
  DispatchMessage(&Message);
 }
 
 return (int)Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
 HDC hdc;
 PAINTSTRUCT ps;
 SYSTEMTIME st;
 static TCHAR sTime[128];
 static RECT rt={100,100,500,120};

 switch(iMessage){
 case WM_DESTROY:
  KillTimer(hWnd,1);
  KillTimer(hWnd,2);
  PostQuitMessage(0);
  return 0;
 case WM_PAINT:
  hdc=BeginPaint(hWnd,&ps);
  TextOut(hdc,100,100,sTime,lstrlen(sTime));
  EndPaint(hWnd,&ps);
  return 0;
 case WM_TIMER:
  switch(wParam){
  case 1:
   GetLocalTime(&st);
   wsprintf(sTime,TEXT("%d : %d : %d : %d"),st.wHour,st.wMinute,st.wSecond,st.wMilliseconds);
   InvalidateRect(hWnd,&rt,true);
   break;
  case 2:
   MessageBox(hWnd,sTime,sTime,MB_OK);
   break;
  }
  return 0;
 case WM_CREATE:
  SetTimer(hWnd,1,1000,NULL);
  SetTimer(hWnd,2,5000,NULL);

  SendMessage(hWnd,WM_TIMER,1,0);
  return 0;
 }
 return (DefWindowProc(hWnd,iMessage,wParam,lParam));

}

프로그램 분석은 굳이 필요 없을듯 하다. 단순히 타이머 하나는 시간을 출력 또하나는 5초마다 메세지 박스가 나오게 하는 그런 예제이다

단순히 타이머를 여러개를 사용 할 수 있다.

는걸 보여주기 위함이다.


'Computer > Win API' 카테고리의 다른 글

WinApi 타이머 콜백함수  (0) 2010.07.19
WinApi 타이머 [백그라운드 작업]  (0) 2010.07.19
WinApi 타이머 확장 문제.  (0) 2010.07.18
WinApi 타이머2 [SendMessage]  (0) 2010.07.18
WinApi 타이머  (0) 2010.07.18
posted by nsakura 2010. 7. 18. 19:19

30미만의 두 정수의 덧셈 안산 문제를 3초 간격으로 계속 출력 하라. 입력은 안받아도 되니 문제만 출력하라.


본인은 이렇게 문제를 풀었다.


'Computer > Win API' 카테고리의 다른 글

WinApi 타이머 [백그라운드 작업]  (0) 2010.07.19
WinApi 두개의 타이머  (0) 2010.07.18
WinApi 타이머2 [SendMessage]  (0) 2010.07.18
WinApi 타이머  (0) 2010.07.18
WinApi 마우스 입력.  (0) 2010.07.18