vs2008 ATL 연결점

4311 단어
Posted on 수요일, 4월 18th, 2012 at 오전 2:54
VS2008을 이용하여 ATL의 간단한 대상을 만들고 웹 액세스 인터페이스와 이벤트 리셋을 제공합니다. 다음은 모두 21장의 캡처(미관을 위해 페이지당 한 장)로 설명합니다.
1. ATL 프로젝트 작성
 
 
 
 
2. DLL 모드 기본 선택
 
 
3. 프로젝트에 ATL 클래스 추가
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4. ATL 단순 객체 선택
 
 
 
 
 
 
 
 
5. 실행 마법사, coclass 및 ProgId 유의하기
 
 
 
6. 선택 단원, 이중, 집합, 연결점
 
 
7. 인터페이스에 방법 추가
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8. ATL 인터페이스 함수 만들기
 
 
 
 
 
8.1 기본 다음 단계
 
 
9. 연결점의 인터페이스에 생성 방법(이벤트 리셋)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9.1 기본 다음 단계
 
 
9.2 기본 다음 단계
 
 
10. 클래스 보기의 실체 클래스에 연결점을 추가하고 연결점을 실현한다
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10.1 기본 다음 단계
 
 
 
10.2 클래스 보기의 실체 클래스에서 연결점 선택
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10.3 기본 다음 단계
 
 
 
11. 코드로 전환하여 솔리드 클래스의 헤더 파일을 열고 IProvideClassInfo2Impl을 추가하고 맵을 추가합니다.IDispatch에서 파생된 인터페이스로 내보내는 것을 수정해야 합니다. 그렇지 않으면 ATL 대상의 인터페이스가 웹에서 발견될 수 없습니다.
 
12. 테스트 코드 추가
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13. IDL 파일을 열고coclass의guid가 이미 인터페이스에 있는 이름과 이벤트의 이름을 찾아낸다. 이것들은 모두 웹에서 필요로 하는 것이다.
 
 
14. 자바스크립트 스크립트를 만들고 방금 기록된coclass의guid(즉 CLASSID)와 인터페이스를 이벤트의 이름으로 채웁니다.
 
15. 테스트를 시작합니다. 만약에 제 창설 절차에 엄격히 따른다면 아래의 테스트 캡처를 볼 수 있을 것입니다.
 
후기
1. 캡처한 프로젝트가 알파벳 하나를 잘못 썼습니다. 다시 시작하면 견딜 수 없으니 UpgradePlagIn을 UpgradePlugIn으로 변경하십시오.
1. 라인에서Fire를 호출해야 한다면OnResult 그러면 창을 만들고, 리셋에서 메시지 알림 창으로FireXXXXX.
예는 다음과 같습니다. 물론 창과 함께 ATL 컨트롤을 처음부터 만드는 것도 좋은 방법입니다.여기까지!
#ifndef _UPGRADE_ATL_MSG_WND_H_
#define _UPGRADE_ATL_MSG_WND_H_

#include <atlbase.h>
#include <atlwin.h>

class CUpgrade ;
class CNotifyWnd : public CWindowImpl< CNotifyWnd, CWindow, CWinTraits< WS_OVERLAPPEDWINDOW > >
{
public:
    static const INT WM_RECEIVE_NOTIFY = WM_USER+XXXX ;

    CNotifyWnd() ;
public:
    DECLARE_WND_CLASS( _T("CNotifyWnd") )
public:
    BEGIN_MSG_MAP( CNotifyWnd )
        MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
        MESSAGE_HANDLER( WM_RECEIVE_NOTIFY, OnNotificationReceived )
    END_MSG_MAP()
public:
    LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled ) ;
    LRESULT OnNotificationReceived( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled ) ;
    VOID SetManagementPointer(CUpgrade* lpVM_) ;
    CUpgrade* _lpVM ;
};
#endif//_UPGRADE_ATL_MSG_WND_H_

좋은 웹페이지 즐겨찾기