본문 바로가기

Study Memos

(206)
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..
BOM (Section 5) 참고> opentutorials.org/course/1375/6628 1. BOM(Browser Object Model) : 웹 브라우저의 차이나 프레임을 추상화해서 프로그래밍적으로 제어할 수 있도록 제공하는 수단.
Object Model (Section 4) 참고> opentutorials.org/course/1375/6622 1. Object Model: JavaScript로 웹 브라우저를 제어하기 위해 사용하는 객체 => 각 태그마다 객체가 만들어짐 2. document.getElementsByTagName( 'someTagName' ) => Tag 이름으로 객체를 얻어오는 함수 3. window 객체 => 전역객체 => window, frame 등을 관리 => 최상위 객체이므로 객체 참조시 생략해도 맨 앞에 붙인 것과 동일한 효과 4. window 객체가 가지고 있는 프로퍼티들 => DOM(Document Object Model), BOM(Browser Object Model), JavaScript Core
HTML에서 JavaScript 사용하기 (Section 3) 참고> opentutorials.org/course/1375/6620 1. HTML 태그의 속성 값으로 사용 (쌍따옴표 안에 JavaScript 코드 사용) 2. HTML 태그 중 태그 사이에 JavaScript 코드 사용 => 태그의 src 속성을 사용하면 외부 파일을 참조하여 JavaScript 코드를 사용할 수 있음 => 태그는 태그에 위치 시킬 때도 있고, 태그의 마지막 부분에 위치시키는 경우도 있다. 의 마지막에 놓는 게 좀 더 낫긴 한데, 에 위치시키는 경우도 많다. 의 마지막에 놓는 게 좀 더 나은 이유는, 웹브라우저가 속성을 처리할 때 에 가 있을 경우 에 있는 class 이름이나 id 등은 아직 읽지 못한 상태이기 때문에 해당 객체를 참조할 떄 null 처리가 된다. 혹 에 태그를 굳이 ..