Study Memos/Windows Programming (66) 썸네일형 리스트형 클라이언트 화면 서버 전송 (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() TransparentBlt (Section 79) 1. Bitmap 출력 시 원하는 배경색을 제거하는 매우 간단한 방법으로, 특정 색상을 제거하고 출력할 수 있는 TrasnparentBlt 함수를 사용하는 방법이 있음. 2. TransparentBlt 를 사용하려면 msimg32.lib 라이브러리를 자신의 프로젝트에 [ #prapramga comment (lib, "Msimg32.lib" ] 으로 추가하면 됨. Resource에 Bitmap 넣고 사용하기 (Section 78) 참고> blog.naver.com/tipsware/221155042841 1. 사용자에게 실행 파일 하나로만 프로그램을 전달할 필요가 있고 그렇게 하고 싶을 땐 프로그램에 필요한 이미지들을 모두 Resource에 포함시켜서 사용 2. Resource 파일에 추가된 이미지들은 프로그램이 빌드되면 모두 실행 파일에 포함됨. 3. Resource에 추가된 Bitmap은 LoadImage() 함수로 간단하게 Bitmap 객체로 만들 수 있음 Windows와 Zip 파일 (Section 75) 참고> blog.naver.com/tipsware/221150318278 1. Windows는 기본적으로 Zip 압축 관련 기능을 제공함. 즉, 응용 프로그램에서 COM을 사용하면 Windows 탐색기와 동일하게 Zip 파일을 사용할 수 있음. => ShlDisp.h 헤더파일을 include 해야 함. (ShlDisp.h는 Shell 관련 COM 객체를 사용할 때 사용하는 헤더파일) 2. CoCreateInstance() 함수를 사용하려면 CoInitializeEx() 함수를 먼저 호출하여 COM을 사용할 수 있게 해주어야 함. -> CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); 3. IShellDispatch 객체로 Zip 경로를 설정할 때에는 반드시 절대 경로로.. 파일 크기 얻기 (Section 74) 참고> blog.naver.com/tipsware/221150263616 1. FindFirstFile 함수: 운영체제의 파일 테이블에서 파일의 상태 값을 가져오기 때문에 "다른 프로그램이 이 파일을 사용하고 있어도" 잘 동작함. => WIN32_FIND_DATA 구조체의 file_info.nFileSizeLow의 값이 파일 크기. => 만일 파일 크기가 4GB 이상이라면 file_info.nFileSizeHigh 도 같이 읽어야함. IStream (Section 73) 참고> blog.naver.com/tipsware/221149676174 1. IStream의 용도 1) 파일 입출력: 파일을 열어서 IStream을 구성 2) 메모리 입출력: 메모리를 생성하고 IStream을 연결 2. IStream을 메모리에 연결해서 사용하게되면 파일 입출력이 필요없어져서 속도에서 더 효율적임 => IStream을 메모리에 연결하려면 핸들 형식의 메모리 필요 1) GlobalAlloc 함수로 메모리 할당 2) CreateStreamOnHGlobal() 함수로 메모리 핸들과 IStream 연결 3. 네트워크로 IStream과 연결된 메모리의 데이터를 전송하려면 실제 메모리 주소를 알아야 하므로 GlobalLock() 함수를 사용하여 메모리 주소를 얻어올 수 있다. Resource (Section 72) 참고> blog.naver.com/tipsware/221149552575 1. FindResource, LoadResource, LockResource 함수를 사용하면서 얻은 핸들이나 포인터는 직접 닫거나 해제하지 않아도 프로그램이 종료될 때 자동으로 정리됨 2. LoadResource 함수 : 리소스의 메모리 핸들 값을 얻는 함수 2. LockResource 함수 : 리소스 핸들 값에서 실제 사용할 메모리의 주소를 얻는 함수 이전 1 2 3 4 5 ··· 9 다음