본문 바로가기

분류 전체보기

(593)
윈도우 인스턴스 추가 메모리 (Section 103) 참고> blog.naver.com/tipsware/221124290636 1. 윈도우 인스턴스를 구성하는 기본 정보를 건드리지 않고 자신이 필요한 만큼 인스턴스 메모리를 추가로 사용하고 싶은 경우 윈도우 클래스를 등록할 때 cbWndExtra 항목에 자신이 사용하고 싶은 메모리의 크기를 적어주면 됨 2. 추가된 인스턴스 메모리에 SetWindowLongPtr 함수를 사용하여 자신이 원하는 데이터의 주소를 저장할 수 있음. 추가된 인스턴스 메모리에 데이터를 저장하고 싶다면 GWLP_USERDATA 옵션을 사용해야 함 3. 추가된 인스턴스 메모리에 저장된 주소를 프로그램에서 사용하고 싶으면 GetWindowLongPtr() 함수를 사용하면 됨. 이 경우에도 GWLP_USERDATA 옵션을 사용해야 함.
GetLastError 함수 (Section 102) 참고> blog.naver.com/tipsware/220963569421 1. GetLastError 함수: 추가적인 오류 상태를 알고 싶을 때 사용 2. FormatMessage 함수: GetLastError 함수는 단순히 오류 코드 값만 알려주기 때문에, 좀 더 오류 사항을 디테일하게 알려주는 함수
HeapAlloc, HeapFree (Section 101) 참고> blog.naver.com/tipsware/220964497321 1. Windows 운영체제에서 동작하는 프로그램은 동적 메모리 할당을 위해 HeapAlloc, HeapFree 함수를 사용함 2. HeapAlloc 함수: Heap에서 동적으로 메모리를 할당할 수 있는 함수 3. HeapFree 함수: Heap에서 동적으로 할당된 메모리를 해제할 수 있는 함수 4. malloc vs HeapAlloc - malloc은 운영체제에 종속되어 있지 않기 때문에 소스의 독립성을 높일 수 있음. 즉, Windows 환경이든 Linux 환경이든 소스 수정이 필요 없음. - HeapAlloc은 Windows 환경에 종속되어 있기 떄문에 Linux 환경에서는 사용하지 못함. - HeapAlloc은 Windows..
FindWindow 함수 (Section 100) 참고> blog.naver.com/tipsware/221005783620 1. FindWindow 함수: 다른 프로그램 또는 자신의 프로그램에서 만든 Window의 핸들 값을 얻을 수 있는 가장 기본적인 함수 - Window Class 이름이나 Window 캡션 이름으로 원하는 Window의 핸들 값을 얻는 함수 2. Window를 찾을 때 주의사항 - Window Class 이름과 Window 캡션 이름은 필수 사항이 아니기 때문에 찾고자 하는 Window가 이 속성이 있는지 'Spy++' 등의 프로그램으로 확인해 봐야 함. - 찾으려는 Window가 '응답 없음' 상태이면 FindWindow() 호출한 프로그램도 같이 '응답 없음' 상태가 될 수 있음 - Window Class 이름은 대소문자를 구별..
DrawText 사용하기 (Section 99) 참고> blog.naver.com/tipsware/221176312002 1. DrawText는 GDI에서 제공하는 함수와 Direct2D에서 제공하는 함수 두 개가 있다. 2. D2D1_DRAW_TEXT_OPTIONS_CLIP 옵션: Text 영역을 벗어난 문자열은 화면에 출력하지 않도록 하는 옵션
클라이언트 화면 모니터링하기 (Section 93) 참고> blog.naver.com/tipsware/221166469147 1. 화면 전송 시작 시 SetTimer(), 화면 전송 종료 시 KillTimer() 함수를 사용하여 1초마다 주기적으로 클라이언트 화면을 전송할 수 있다. => 이 경우 1초마다 PNG로 이미지를 저장하는 것은 디스크에 부담이 되므로 빼는 게 더 나을 수도 있다. => 그냥 압축된 PNG 이미지를 IStream을 이용해 바로 메모리에 보관한다. 2. 전송 부하 => 이미지가 너무 크거나 화질이 좋으면 전송이 1초 내에 완료되지 못할 수도 있다. 이 경우를 대비해 다음 캡처 작업을 하기 전에 전송 작업이 완료되었는지 확인하는 루틴이 필요하다. 3. 서버 측에서도 1초마다 PNG 이미지 데이터를 받아서 파일로 저장하면 부하가 있을 ..
클라이언트 화면 서버 전송 (Section 92) 참고> blog.naver.com/tipsware/221165933399 1. Screen DC는 일반 Window DC에 비해 수행 속도가 많이 느리기 때문에 상황을 잘 판단하여 Screen DC의 사용을 최소화 해야 함 2. 컴퓨터 화면을 캡처함 => Screen DC에 연결된 Bitmap 이미지를 복사함 => Screen DC에 연결된 Bitmap 과 동일한 속성의 Bitmap이 있어야 함 => BitBlt함수를 사용하기 위해서는 복사된 이미지가 저장될 Bitmap과 연결할 Memory DC도 있어야 함 3. 화면 이미지를 전송하려면 용량이 작아야 함 => Bitmap 이미지를 PNG 형식의 이미지로 압축하면 1/50 용량으로 줄어듦 => 네트워크 부하를 줄이려면 PNG 형식처럼 압축해서 보내는 게..
현재 작업 경로 (Section 83) 참고> blog.naver.com/tipsware/221158618556 1. 현재 Directory 경로 얻어오기 : GetCurrentDirectory 2. 현재 작업 경로에서 파일 목록을 얻어올 때에는 한번에 하나의 파일 정보를 읽어온다. 한 경로에 파일이 무수히 많을 수도 있기 때문. => FindFirstFile(), FindNextFile()