728x90
교내 전공과목인 윈도우즈 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..
가용공간 리스트 가용공간 리스트에 대한 소개 의미 사전적 의미: 컴퓨터 운영 체제가 주기억 장치의 사용되지 않은 영역, 또는 블록을 라이브러리 형태로 구성한 목록 직관적인 의미: 이제 사용하지 않는 노드를 체인 형태의 리스트로 만들기 등장 동기 체인과 원형 레스트에서 진행되는 삭제는 노드를 하나씩 처리한다. => 따라서 체인 혹은 원형 리스트는 리스트의 길이에 비례하여 시간이 소요된다. => 삭제라는 행위자체가 비효율적이네. 내용이 삭제된 노드에 파괴자를 실행하는 대신에, 삭제된 자유노드를 체인으로 유지하여 새로운 노드가 필요하면 이 빈 공간을 할당하게 만들면 좋을 것 같다. (존재자체를 지우던 삭제라는 행위를 아예 생략하는 거지.) 만약 가용 공간 리스트가 공백이라면 new를 통한 새로운 노드를 생성하..