_______WINAPI______________________________________________________________________________
SendMessage() , 두 개의 타이머 |
//iMessage : 어떤 종류의 메시지가 발생했는지.. |
콜백함수 |
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; int iScore = 85; //TCHAR str[128]; //SetTextAlign 테스트용 //RECT rt = {100, 100, 400, 300}; SYSTEMTIME st; static TCHAR str[256]; //WM_CHAR 메시지 테스트용 static TCHAR sTime[128]; int len; int i; switch(iMessage) { case WM_DESTROY:// 창닫고 종료처리 메시지 KillTimer(hWnd,1); // 타이머 파괴 PostQuitMessage(0); return 0; case WM_LBUTTONDOWN: //마우스 왼쪽 버튼을 눌렀을때 메시지 hdc = GetDC(hWnd); Ellipse(hdc,LOWORD(lParam)-10,HIWORD(lParam)-10,LOWORD(lParam)+10,HIWORD(lParam)+10); ReleaseDC(hWnd,hdc); return 0; case WM_PAINT: //WM_PAINT 메시지는 출력한 문자열이 지워져도 항상 다시 복구됨 hdc = BeginPaint(hWnd, &ps);//BeginPaint()는 DC 핸들을 반환 TextOut(hdc,100,100,sTime,lstrlen(sTime)); EndPaint(hWnd, &ps); return 0; case WM_LBUTTONUP: // 왼쪽 마우스 버튼을 눌렀다가 뗄때 //bNowDraw = FALSE; return 0; case WM_LBUTTONDBLCLK: // 마우스 왼쪽 버튼을 더블 클릭할때 //WndClass.style = CS_HREDRAW | CS_VREDRAW |CS_DBLCLKS; // 더블클릭 메시지를 사용하려면 //창 셋팅 할때 의사 코드를 넣어야함 return 0; case WM_CREATE: //WM_CREATE 메시지는 창이 생성할때 제일 처음 딱 한번 수행됨 SetTimer(hWnd,1,50, TimerProc);//타이머 셋팅(, 타이머번호ID, 시간ms, TimerProc) //백그라운드 작업 : 프로그램이 실행되는 동안 지속적으로 수행해야 할 작업이 있을때 //타이머를 이용하여 아주 빠른 주기머를 셋팅하고 백그라운드 작업을 하면됨 return 0; } return (DefWindowProc(hWnd, iMessage,wParam,lParam)); //DefWindowProc : WndProc에서 처리하지 않은 나머지 메시지에 관한 처리를 함 } /* SetTimer()의 네번째 인수는 TIMERPROC lpTimerFunc이라고 되어 있는데 이 인수는 타이머 프로시저 함수의 포인터를 가리킨다.이 인수가 NULL로 되어 있을 경우 첫번째 인수로 지정된 hWnd로 WM_TIMER 메시지가 전달되지만 이 인수에 타이머 함수가 지정되었을 경우는 매 시간마다 이 함수가 대신 호출된다. */ void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime) { HDC hdc; int i; hdc = GetDC(hWnd); for(i = 0; i < 1000; i++) { SetPixel(hdc,rand()%500, rand()%400, RGB(rand()%256, rand()%256,rand()%256)); } ReleaseDC(hWnd,hdc); }
|
작업영역 |
//iMessage : 어떤 종류의 메시지가 발생했는지.. |
WM_SIZE |
윈도우의 크기가 변경될때 발생하는 메시지
lParam의 하위 워드에는 변경된 후의 윈도우 폭이, 상위 워드에서는 높이가 전달되며 wParam에는 이 메시지가 발생한 이유를 나타내는 플래그가 전달됨. |
WM_MOVE |
윈도우의 위치가 변경될때 발생하는 메시지
lParam의 하위 워드에는 새 X좌표, 상위 워드에서는 윈도우의 새 Y좌표가 전달됨
|
- Source ------------
---------------------
'Win32 API' 카테고리의 다른 글
2013.10.23 _ Sokoban 연습 (0) | 2013.10.23 |
---|---|
2013.10.23_ API _ Bitmap 분석해보기 (0) | 2013.10.23 |
2013.10.14_API_Control(체크박스/라디오박스) (0) | 2013.10.14 |
2013.10.04 _ API 정리 자료 ( 입력/출력 부분 ) (0) | 2013.10.08 |
2013.10.01 _API 새창띄우기 (2) | 2013.10.01 |