기본 콘텐츠로 건너뛰기

2월, 2008의 게시물 표시

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱 이 문서에서는 공통되는 Windows 컨트롤을 서브클래싱하여 ActiveX 컨트롤을 만드는 과정을 보여 줍니다. 기존 Windows 컨트롤을 서브클래싱하면 ActiveX 컨트롤을 손쉽게 개발할 수 있습니다. 새 컨트롤은 서브클래싱된 Windows 컨트롤의 그리기 및 마우스 클릭에 대한 응답과 같은 기능을 갖게 됩니다. MFC ActiveX 컨트롤 BUTTON 샘플은 Windows 컨트롤의 서브클래싱 예제입니다. Windows 컨트롤을 서브클래싱하려면 다음 작업을 수행합니다. COleControl의 IsSubclassedControl 및 PreCreateWindow 멤버 함수 재정의 OnDraw 멤버 함수 수정 컨트롤에 리플렉션된 ActiveX 컨트롤 메시지(OCM) 처리 참고     컨트롤 설정 페이지의 부모 창 클래스 선택 드롭다운 목록을 사용하여 컨트롤이 서브클래싱되도록 선택하면 ActiveX 컨트롤 마법사가 이 작업의 대부분을 자동으로 수행합니다. 컨트롤 서브클래싱에 대한 자세한 내용은 Knowledge Base article Q243454를 참조하십시오. IsSubclassedControl 및 PreCreateWindow 재정의 PreCreateWindow 및 IsSubclassedControl 을 재정의하려면 해당 컨트롤 클래스 선언의 protected 섹션에 다음 코드 줄을 추가합니다. BOOL PreCreateWindow( CREATESTRUCT& cs ); BOOL IsSubclassedControl( ); 컨트롤 구현 파일(.CPP)에는 다음의 코드 줄을 추가하여 두 개의 재정의된 함수를 구현합니다. BOOL CSampleCtrl::PreCreateWindow( CREATESTRUCT& cs ) { cs.lpszClass = _T("BUTTON"); retu

BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool

wafe's weblog  님의 블러그에서... MSXML을 쓰다보니 VARIANT_BOOL이라는 타입이 있더라. short로 typedef 되어 있는 타입이다. 평소엔 그냥 대충 썼는데 왜인지 오늘따라 이상하게도 궁금증이 발동해서 검색해보니 이런 글이 나온다. BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool VARIANT_BOOL 타입에 넣는 값으로는 VARIANT_TRUE나 VARIANT_FALSE를 써야 한다. 지금까지 이런 상수가 정의되어 있는줄도 모르고 그냥 BOOL 쪽 값(TRUE, FALSE)으로 비교한다든지 하고 있었다. VARIANT_FALSE는 0이니까 그렇다쳐도 VARIANT_TRUE는 -1로 정의되어 있어서 겉으로 보이진 않지만 잠재적 문제가 코드에 들어있을 지도 모르겠다. -_-; 아무튼 참/거짓을 나타내는 방법이 다양하기도 하다. VARIANT_BOOL에 BOOL에 bool에 BOOLEAN이라는 녀석도 있었네? BOOLEAN이라는 타입은 처음 본다. 나는 왠만하면 bool 타입을 쓰는 편인데 C++ 언어에서 정해준 불리언 타입이기도 하고, 소문자라 BOOL 타입에 비해서 쓰기 편하기 때문이기도 하다 후후.