Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

MS로부터 답변을 들은 사항입니다.

한번 테스트 프로젝트를 만들어서 직접 따라해 보세요.

1. ATL DLL 프로젝트를 만들고
2. Insert New Object로 해서 "ATL Object Wizard"를 부릅니다.
3. 거기서 "Controls" 범주의 "HTML Control"을 선택해서 생성시킵니다.
4. 해당 컨트롤이 생성되면 "...UI.htm" 파일이 하나 생기게 되는데, 그 파일을 편집해서 <input type=text>를 하나 추가시킵니다.
5. 이제 컴파일을 하고, 해당 개체가 <OBJECT/>로 해서 삽입된 HTML 파일을 Internet Explorer에서 불러들입니다.
6. Control 영역에 물론, <input type=text>에 해당하는 입력박스가 보일 것입니다. 그 안에서 약간의 텍스트를 추가하고 화살표 키, DELETE 키 등을 입력해 보세요.

아마, 그런 키들이 통하지 않을 것입니다.

MS 측의 답변에서는, 그것이 ATL Wizard의 실수라고 합니다.
Wizard에서 다음과 같은 코드를 빼먹고 Template 파일들을 생성하는 것이 원인이라고 합니다.

  STDMETHOD(TranslateAccelerator)(LPMSG pMsg)
   {
    CComPtr<IOleInPlaceActiveObject> spIOleInPlaceActiveObject;
    
    HRESULT hr = m_spBrowser->QueryInterface(&spIOleInPlaceActiveObject);
    if (SUCCEEDED(hr))
     hr = spIOleInPlaceActiveObject->TranslateAccelerator(pMsg);
    if (hr != S_OK)
     hr = IOleInPlaceActiveObjectImpl<CCTestKey>::TranslateAccelerator(pMsg);

    return hr;
   }

위의 코드를 HTML Control 헤더 파일 안에 추가한 후, 다시 컴파일해서 키보드 입력을 해보십시오.
이번에는 잘 통할 것입니다.

MS 측의 실수라고 하는 것이 어느 정도 수긍이 가는 이유가, 실제로 VS.NET의 ATL 7.0에서 HTML Control을 생성시키면 위의 코드가 추가된 것을 확인할 수 있습니다.

어쨌든, MS 관련 COM 구조에 대해서 정확히 이해하지 못하고 피상적으로만 사용하는 개발자들의 오류도 빼놓을 수는 없습니다. 관련 Interface들을 정확히 이해하고만 있어도 위의 코드 정도는 개발자 스스로가 알아내서 써줄 수도 있지 않을까 하는 생각이 드네요.

요즘 들어서야, ATL의 내부도 조금 눈에 익어서 이해가 가는 듯 싶은데... .NET의 출현 때문에 깊이있게 맘먹고 공부를 못하고 있답니다. ^^








[최초 등록일: ]
[최종 수정일: 3/20/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
335정성태8/20/200628359디버깅 기술: 8. COM+ 서버 응용 프로그램에 대한 F5 디버깅 방법
334정성태8/20/200623552디버깅 기술: 7. VS.NET 2003/2005의 다중 프로젝트 디버깅
333정성태8/20/200624043개발 환경 구성: 11. COM+ 서버 활성화 보안 설정
331정성태8/27/200617005개발 환경 구성: 10. 최대 절전 모드와 VPC 네트워크 문제
330정성태8/20/200617285개발 환경 구성: 9. VPC로 구성하는 개인 환경
328정성태8/20/200635017개발 환경 구성: 8. AppVerifier 사용법 [1]
327정성태8/16/200631824개발 환경 구성: 7. ActiveX 서명 과정 자동화 [1]
326정성태8/16/200625559Team Foundation Server: 13. Sysnet 웹 사이트 TFS Migration
322정성태8/15/200620487개발 환경 구성: 6. 4GB 메모리 구성 [1]
316정성태9/20/200639556디버깅 기술: 6. .NET 예외 처리 정리 [6]
309정성태12/27/200640468디버깅 기술: 5. PDB 이야기 [7]
310정성태8/5/200627545    답변글 디버깅 기술: 5.1. PDB 파일에 따른 Debug 정보 - WinForm + Library 유형의 프로젝트파일 다운로드1
311정성태8/10/200627015    답변글 디버깅 기술: 5.2. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Application Project + Library 유형의 프로젝트
312정성태8/5/200629750    답변글 디버깅 기술: 5.3. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Site Model 유형의 프로젝트
313정성태8/12/200628866    답변글 디버깅 기술: 5.4. VS.NET 2005 디버그 모드에서의 PDB 파일 사용 차이 (1)
317정성태8/12/200626348    답변글 디버깅 기술: 5.5. VS.NET 2005 디버그 모드에서의 PDB 파일 사용 차이 (2)
318정성태8/12/200632776    답변글 디버깅 기술: 5.6. VS.NET 2005를 이용한 미니덤프 파일 분석 (1)
319정성태8/12/200627777    답변글 디버깅 기술: 5.7. VS.NET 2005를 이용한 미니덤프 파일 분석 (2) [1]
320정성태8/12/200631911    답변글 디버깅 기술: 5.8. WinDBG를 이용한 미니덤프 파일 분석 [1]
321정성태8/13/200636333    답변글 디버깅 기술: 5.9. Microsoft의 PDB 파일 관리
323정성태8/15/200637763    답변글 디버깅 기술: 5.10. Symbol Server 생성 [4]
324정성태8/15/200634596    답변글 디버깅 기술: 5.11. PDB 파일과 소스 코드
325정성태9/8/200627273    답변글 디버깅 기술: 5.12. CCP를 이용한 Windows Source Code 수준의 디버깅
329정성태8/19/200626286    답변글 디버깅 기술: 5.13. 소스 서버 구성 [1]
332정성태8/20/200627748    답변글 디버깅 기술: 5.14. GAC 에 등록된 Assembly 디버그 [2]
341정성태9/16/200620107    답변글 디버깅 기술: 5.15. [내용 예약]
... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...