Study Memos/Windows Programming (66) 썸네일형 리스트형 LIB vs DLL (Section 106) 참고> blog.naver.com/tipsware/221359282016 1. LIB 파일(Library, *.lib): C 언어 소스 파일(*.c 또는 *.cpp)을 컴파일해서 만든 목적 파일(*.obj)을 효율적으로 재구성해 놓은 파일 -> 실행 파일에 포함될 때는 링커(Linker)에 의해 라이브러리에서 실제로 사용되는 함수의 코드만 실행 파일에 포함함. 2. LIB 파일의 경우 라이브러리의 내용이 바뀌면 새로 빌드해야 하는 단점이 있음. 이 불편함음 보완하기 위해 Windows 운영체제는 DLL(Dynamic Linking Library) 라는 기술을 제공함 -> DLL은 프로그램이 실행될 때 연결되서 사용됨 3. DLL은 라이브러리에 문제가 있을 경우 해당 DLL 파일만 새로 만들면 되기 때문에.. 최상위 윈도우, TopMost (Section 105) 참고> blog.naver.com/tipsware/221005962058 1. 최상위 윈도우: 선택된 Window의 영역에 가려지지 않고 항상 사용자가 볼 수 있도록 맨 앞에 위치하는 Window -> Window를 생성할 때나 Window의 옵션을 변경할 때 WS_EX_TOPMOST 속성을 Window에 넣어주면 최상위 윈도우가 된다. 이 때에는 CreateWindowEx() 함수 혹은 SetWindowPos() 함수를 사용함. 2. 다른 프로그램에서 만든 Window를 얻어와서도 얼마든지 WS_EX_TOPMOST 속성을 적용시킬 수 있음. 윈도우 인스턴스 추가 메모리 (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 이미지 데이터를 받아서 파일로 저장하면 부하가 있을 .. 이전 1 2 3 4 ··· 9 다음