기본 콘텐츠로 건너뛰기

라벨이 OCX인 게시물 표시

IE 에서 DHTML Editing 컨트롤을 이용한 MFC OCX의 탭 키 처리 문제

IE 에서 DHTML Editing 컨트롤을 이용한 MFC OCX의 탭 키 처리 문제 현상 DHTML Editing 컨트롤을 Embed하여 MFC OCX를 작성한 경우, IE에서 이 컨트롤을 사용하면 DHTML Editing 컨트롤에서 방향 키 및 탭 키가 동작하지 않습니다. 위로 가기 원인 IE 컨테이너가 Accelerator Key에 대한 이벤트를 MFC OCX에서만 처리할 수 있도록 해주기 때문입니다. 즉, IE 에서 MFC OCX에 Embed된 DHTML Editing 컨트롤이 Accelerator Key인 탭 키 및 방향키에 대한 이벤트를 처리하지 못하기 때문입니다. 위로 가기 해결 방법 IOleInPlaceActivateObject 인터페이스를 이용하여 MFC OCX의 TranslateAccelerator 메소드가 호출되었을 때 DHTML Editing 컨트롤의 TranslateAccelerator 메소드가 강제적으로 호출되도록 합니다. 예제 코드 // MFC OCX의 이벤트 핸들러 BOOL CTest1Ctrl::PreTranslateMessage(MSG* pMsg) { IOleInPlaceActiveObject* piOleInplace; IUnknown* piUnknown; switch (pMsg->message) { case WM_KEYDOWN: case WM_KEYUP: switch (pMsg->wParam) { // 처리하려는 키에 대하여 case VK_UP: case VK_DOWN: case VK_LEFT: case VK_RIGHT: case VK_HOME: case VK_END: OutputDebugString ("Key down for Arrow ...

VB용 ocx에 사용자 정의 속성 추가

먼저 VB의 추가기능 관리자에서 ActiveX 컨트롤 인터페이스 마법사 를 로드합니다. ActiveX 컨트롤 인터페이스 마법사 를 실행합니다. 이 화면은 그냥 건너뜁니다. 우리는 사용자 속성을 추가할것이기 때문에 이 화면도 건너뜁니다. 기존에 추가시킨 속성이 하나 보이는군요. 그럼 추가 버튼을 눌러 새로운 속성을 추가시켜 봅시다. 메서드를 추가시킬려면 형식에서 메서드(M)을 선택하시면 됩니다. 여기서는 MaterialBalanceFile과 EqlistFile 두개의 속성을 새롭게 추가시켰습니다. 추가시킨 속성의 데이터 형식을 설정합니다. 데이터 형식까지 설정을 마쳤으면 모든 작업이 끝났습니다.

[펌]mfc로 만든 ocx를 Explore에서 사용시 뜨는 보안 경고창 없애기

MFC 위저드로 만든 컨트롤을 등록하고 Explore에서 참조하려면 계속 보안 경고창이 떠서 귀찮게 합니다. 익스플로어의 인터넷 옵션의 "보안"의 "이 영역에 적용할 보안수준"부분을 "최소"로 변경하면 해결되지만 그러면 신뢰할 수 없는 사이트에 들어가도 경고를 하지 않으므로 추천할 만한 방법은 아닙니다. 이 문제는 소스차원에서 해결이 가능한 부분으로 아래의 함수를 약간만 수정하면 됩니다. 위저드로 만든 소스를 찾아보면 UpdateRegistry(...)함수가 있을 겁니다. 안에 포함된 내용을 보시면 대략 다음과 같이 되어 있을 겁니다. return AfxOleRegisterControlClass( AfxGetInstanceHandle(), m_clsid, m_lpszProgID, IDS_TESTCTRL, --> 프로그램마다 다름 IDB_TESTCTRL, --> 프로그램마다 다름 afxRegApartmentThreading, _dwTestCtrlOleMisc, --> 프로그램마다 다름 _tlid, _wVerMajor, _wVerMinor); 이 부분을 아래처럼 변경하시면 됩니다. if(bRegister) { BOOL retval = AfxOleRegisterControlClass( AfxGetInstanceHandle(), m_clsid, m_lpszProgID, IDS_TESTCTRL, IDB_TESTCTRL, afxRegApartmentThreading, _dwTestCtrlOleMisc, _tlid, _wVerMajor, _wVerMinor); // mark as safe for scri...