전체 글 (597) 썸네일형 리스트형 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 함수 : 리소스 핸들 값에서 실제 사용할 메모리의 주소를 얻는 함수 Drag and Drop (Section 71) 참고> blog.naver.com/tipsware/221148420395 1. 프로그램에 파일 Drop이 불가능할 경우 해당 윈도우가 WS_EX_ACCEPTFILES 라는 확장 속성을 가지고 있지 않아서 그렇다. -> WS_EX_ACCEPTFILES 속성을 사용하려면 CreateEx() 함수로 윈도우를 생성할 때 이 속성을 넣어주면 됨 2. 파일이 윈도우에 Drop되면 해당 윈도우에 WM_DROPFILES 메시지가 발생함 3. Drag and Drop을 사용하려면 운영체제의 Shell API를 사용해야 하기 때문에 'shellapi.h' 헤더 파일을 추가해야 함 4. GetFileAttributes(): 경로를 넣어주면 해당 항목의 파일 속성 값을 반환해줌 -> 비트 연산자를 이용하여 FILE_ATTRI.. C++ ofstream, localtime_s 함수, PSCP 1. C++ std::ofstream 을 사용할 때 파라미터로 보내는 string에 ':' 이 들어가면 동작을 안함.. ':' 쓰지 않는 string으로 넣어주어야 됨 2. localtime_s() 함수로 얻게 되는 time_t 시간 데이터는 월을 0 부터 계산한다. 그래서 time_t 객체의 tm_mon 변수에 +1을 해야 정상적인 '월' 값이 나온다. 3. pscp: Ubuntu 에서 Window로 파일 옮길 때 pscp로 파일을 다운로드 받을 수 있다. SSH 포트가 바뀌어있을 경우 -P 옵션으로 포트를 재지정해주어야 하며, 디렉토리를 복사할 경우 -r 옵션을 주어야 한다. C++ CopyConstructible 1. CopyConstructible : 복사 생성가능 2. std::bind() 의 파라미터로 unique_ptr을 넘기면 에러가 뜬다. 파라미터로는 CopyConstructible 한 객체가 넘어와야 한다는 메시지였다. unique_ptr은 MoveConstructible과 MoveAssignable 속성은 가지고 있지만, CopyContructible과 CopyAssignable 속성은 가지고 있지 않기 때문이다. 반면, shared_ptr의 경우 CopyConstructible과 CopyAssignable 속성이 있기 때문에 std::bind()의 파라미터로 사용 가능하다. 그래서 unique_ptr로 선언된 변수를 shared_ptr로 선언한 후 빌드하니 정상적으로 컴파일이 완료되었다. BOM (Section 5) 참고> opentutorials.org/course/1375/6628 1. BOM(Browser Object Model) : 웹 브라우저의 차이나 프레임을 추상화해서 프로그래밍적으로 제어할 수 있도록 제공하는 수단. 이전 1 ··· 47 48 49 50 51 52 53 ··· 75 다음