본문 바로가기

전체 글

WM_MOUSEACTIVATE 비활성화 된 윈도우에 마우스 클릭을 할 경우 WM_MOUSEACTIVATE -> WM_ACTIVATE 메시지가 순차로 전달되는데 마우스 클릭에 의한 WM_ACTIVATE 메시지는 WM_MOUSEACTIVATE 메시지를 먼저 보내고 그에 대한 리턴값을 가지고 처리를 하게 된다. WM_MOUSEACTIVATE 메시지의 리턴값으로 아래 4가지 값이 있다. MA_ACTIVATE 윈도우를 활성화 하고 마우스 메시지를 처리한다. MA_ACTIVATEANDEAT 윈도우를 활성화 하고 마우스 메시지를 무시한다. MA_NOACTIVATE 윈도우를 활성화 하지 않고 마우스 메시지를 처리한다. MA_NOACTIVATEANDEAT 윈도우를 활성화 하지 않고 마우스 메시지를 무시한다. MA_NOACTIVATE(ANDEAT) 값.. 더보기
ByteBuffer class ByteBuffer : public std::vector { public: ByteBuffer(void) {} ByteBuffer(size_t size):std::vector(size) {} ByteBuffer(const void* ptr, size_t len) { append(ptr, len); } template void append(const T& b) { insert(this->end(), (const unsigned char*)&b, (const unsigned char*)&b+sizeof(T)); } void append(const void* ptr, size_t len) { insert(this->end(), (const unsigned char*)ptr, (const unsign.. 더보기
atlcom.h에서 ClassesAllowedInStream rgclsidAllowed; 에러가 나는 경우 (updated) 이전 포스팅 중에 atl 관련 보안업데이트로 인해 에러가 나는 경우에 대해서 Dynamic Link to ATL로 변경하여 처리한 글이 있다. (여기) 1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C2146: syntax error : missing ';' before identifier 'rgclsidAllowed' 1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C4430: missing type specifier - int assumed. Note: C++ does not suppor.. 더보기
gcc 컴파일 옵션 1. 링크 옵션 옵션 설명 -lname 링크할 때 name인 lib를 찾음 -nodefaultlibs 링크할 때 표준 시스템 lib를 사용하지 않음 -nostartfiles 링크할 때 표준 시스템 startup 파일을 사용하지 않음 -nostdlib 링크할 때 표준 시스템 startup과 lib를 사용하지 않는다 -s 완성된 바이너리에서 모든 심볼 테이블과 재배치 정보를 제거 -shared 공유 오브젝트를 생성 (다른 오브젝트와 링크하여 실행 파일을 생성할 수 있음) -shared-libgcc libgcc의 공유 라이브러리 버전을 강제로 지정해서 사용 -static 정적 라이브러리를 이용하여 링크 -static-libgcc libgcc의 정적 라이브러리 버전을 강제로 지정 -u sym 심볼 sym이 정의.. 더보기
EVR 렌더러 사용시 Directshow를 사용하면서 EVR을 사용하여 프로그래밍하는 경우 IMFVideoDisplayControl 인터페이스를 사용하여 화면 비율 또는 사이즈 변경시 깜박이는 문제가 발생하는 경우가 종종 있다. EVR에서는 IMFVideoMixerControl 인터페이스를 추가로 생성하여 화면 비율 및 사이즈 변경시 IMFVideoMixerControl::SetStreamOutputRect 으로 전체 비디오 윈도우에서 화면 비율을 계산하여 값을 설정해 준 후 IMFVideoDisplayControl::SetVideoPosition 으로 전체 비디오 윈도우 영역을 설정해 주면 화면 비율 및 사이즈 조절 시 flickering 현상이 제거된다. 더보기
Warning: no message line prompt for ID 0x805B 프로그램 디버깅 중 마우스로 메뉴를 왔다갔다 하는 경우 발생하게 되는데 메뉴에 마우스가 오버되었을 때 해당 아이템에 해당하는 텍스트를 statusbar에 표시하여야 하는데 0x805B에 해당하는 prompt 문자열이 없어서 발생하는 것으로 해당 값을 10진수로 변경하여 resource.h에 추가하면 된다. 더보기
Visual Studio 환경설정 초기화 cmd->C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ 위치에 devenv.exe /resetuserdata 입력 더보기
visual studio 2008 컴파일러 옵션 C/C++ 컴파일러 옵션 --------------------[최적화]------------------------------------------------------/O1 공간을 최소화합니다. /O2 속도를 최대화합니다. /Ob 인라인 확장 (기본값 n=0) /Od 최적화를 사용하지 않습니다(기본값). /Og 전역 최적화를 사용합니다. /Oi[-] 내장 함수를 사용합니다. /Os 코드 공간을 우선 고려합니다. /Ot 코드 속도를 우선 고려합니다. /Ox 최적화를 최대화합니다. /Oy[-] 프레임 포인터를 생략합니다. --------------------[코드생성]---------------------------------------------------- /GF 읽기 전용 문자열 풀링을 사용합니다. /.. 더보기