728x90
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. str을 원하는 위치와 내용을 띄울 수 있는 대화상자를 만들자 (0). 리소스 설정 EditControl, StaticEditor 배치 IDM_X, IDM_Y, IDM_STR로 동작할 예정 (1) 소스코드 #include "resource.h" // 리소스 적용하기 위한 헤더파일 적용 // WinMain > WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //배경색 칠하기 // 전역변수 HWND hWNdMain; int x, y; TCHAR str[128]; // InfoDlgProc 작성 BOOL CALLBACK InfoDlgProc(HWND hDlg, UINT iMessage, WPAR..
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. Mouse 파일의 BackSpace 동작의 오류를 고치자 (1) 오류 화면 선을 몇개 그리다가 지우기(BackSpace)동작을 반복하면 선이 이어지는 오류가 발생한다. 이는 소스코드에서 선 객체를 셀 때 초기화 동작을 제대로 해 주지 않은 것이 원인이다. (2) 소스코드 // 선을 지울 때, 혹은 선을 그릴 때를 선택하여 현재 객체의 가진 점 개수를 초기화 시키도록 하자. /* WnProc > WM_KEYDOWN */ case WM_KEYDOWN: switch (wParam) { case VK_BACK: // 선 객체 지우기 if (iLineCount > 0) { iLineCount--; lines[iLineCount].iPointCount = 0; ..
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. Mouse 버튼을 통해 선그리기를 해보자 (1) 소스코드 LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; static int x; static int y; //static BOOL bNowDraw=FALSE; switch (iMessage) { case WM_LBUTTONDOWN: /* 선그리기 시작을 알림 */ x = LOWORD(lParam); y = HIWORD(lParam); //bNowDraw=TRUE; return 0; case WM_MOUSEMOVE: if (wParam & MK_LBUTTON) { // & = 비트연산자 /..
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. Timer프로그램을 기능개선 시켜보자. 목표: 쓸데없이 전체화면을 새로고침하지말고, 문구가 나오는 부분만 수정해주자. LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; SYSTEMTIME st; static TCHAR sTime[128]; switch (iMessage) { case WM_CREATE: SetTimer(hWnd, 1, 1000, NULL); SendMessage(hWnd, WM_TIMER, 1, 0); return 0; case WM_RBUTTONDOWN: hdc = GetDC(hWnd); El..
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. Timer프로그램을 수평우향으로 움직이게 바꾸자. (기존: 수직하향) #그전에, [오류: 'ZI'과(와) '/Gy-'명령줄 옵션이 호환되지 않습니다.] 해결하기 아니오 -> 예로 바꿔주기. (1) 코드소스 case WM_TIMER: if (x >= rect.right) //바뀜 { str[0] = rand() % 26 + 97; y = rand() % (rect.bottom - 40) + 20; //바뀜 x = 0; //바뀜 } x += 60; //바뀜 InvalidateRect(hWnd, NULL, TRUE); return 0; 3주차(1) 포스팅 글에 있던 소스에서 WM_TIMER부분만 바꿔주면 됨. (2) 실행결과 옆으로 움직이고 있는 거 맞음...
교내 전공과목인 윈도우즈 API수업을 정리합니다 1. Timer을 알아보자. (1) 코드소스 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,400,120}; switch (iMessage) { case WM_CREATE: //window를 켰을 때 한 번 나타남. (p.99) SetTimer(hWnd,1,1000,NULL); // (1) SetTime(윈도우핸들, 타이머 번호, 메시지 생성간격, 보통 NULL지정) //SendMessage(hWnd, W..