Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
-=ЮрА=-
Заблокирован
Автор FAQ
#1

Поясните предназначения каждого метода - C++

08.02.2011, 15:49. Просмотров 887. Ответов 0
Метки нет (Все метки)

Ребят подскажите можно ли как то проще реализовать???
В COM я не очень поэтому надеюсь на помощь спеца!

Привожу весь класс

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class CDiscFormatData;
 
// CDiscFormatDataEvent command target
 
class CDiscFormatDataEvent : public CCmdTarget
{
    DECLARE_DYNAMIC(CDiscFormatDataEvent)
private:
    LPTYPEINFO  m_ptinfo;           // ITest type information
    DWORD       m_dwCookie;
    LPUNKNOWN   m_pUnkSink;
    LPUNKNOWN   m_pUnkSrc;
 
public:
    CDiscFormatDataEvent();
    virtual ~CDiscFormatDataEvent();
 
    static CDiscFormatDataEvent* CreateEventSink();
 
    bool ConnectDiscFormatData(CDiscFormatData*);
 
    DECLARE_INTERFACE_MAP()
 
    BEGIN_INTERFACE_PART(FormatDataEvents, DDiscFormat2DataEvents)
        //
        // IDispatch Methods
        //
        STDMETHOD(GetTypeInfoCount)(UINT FAR* pctinfo);
        STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
        STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames,
            UINT cNames, LCID lcid, DISPID FAR* rgdispid);
        STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid,
            WORD wFlags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult,
            EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr);
        //
        // DDiscFormat2DataEvents Methods
        //
        STDMETHOD_(HRESULT, Update)(LPDISPATCH, LPDISPATCH);
    END_INTERFACE_PART(FormatDataEvents)
 
protected:
    DECLARE_MESSAGE_MAP()
};
Ну и реализация самих методов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// CDiscFormatDataEvent
 
IMPLEMENT_DYNAMIC(CDiscFormatDataEvent, CCmdTarget)
 
BEGIN_INTERFACE_MAP(CDiscFormatDataEvent, CCmdTarget)
    INTERFACE_PART(CDiscFormatDataEvent, IID_IDispatch, FormatDataEvents)
    INTERFACE_PART(CDiscFormatDataEvent, IID_DDiscFormat2DataEvents, FormatDataEvents)
END_INTERFACE_MAP()
 
CDiscFormatDataEvent::CDiscFormatDataEvent()
: m_hNotifyWnd(NULL)
, m_ptinfo(NULL)
, m_dwCookie(0)
, m_pUnkSink(0)
, m_pUnkSrc(0)
{
 
}
 
CDiscFormatDataEvent::~CDiscFormatDataEvent()
{
    if (m_dwCookie && (m_pUnkSrc != NULL) && (m_pUnkSink != NULL))
    {
        AfxConnectionUnadvise(m_pUnkSrc, IID_DDiscFormat2DataEvents, m_pUnkSink,
            TRUE, m_dwCookie);
    }
}
 
BEGIN_MESSAGE_MAP(CDiscFormatDataEvent, CCmdTarget)
END_MESSAGE_MAP()
 
 
 
// CDiscFormatDataEvent message handlers
 
ULONG FAR EXPORT CDiscFormatDataEvent::XFormatDataEvents::AddRef()
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    return pThis->ExternalAddRef();
}
ULONG FAR EXPORT CDiscFormatDataEvent::XFormatDataEvents::Release()
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    return pThis->ExternalRelease();
}
STDMETHODIMP CDiscFormatDataEvent::XFormatDataEvents::QueryInterface
                        (REFIID riid, LPVOID FAR* ppvObj)
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    return (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);
}
STDMETHODIMP
CDiscFormatDataEvent::XFormatDataEvents::GetTypeInfoCount
                        (UINT FAR* pctinfo)
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    *pctinfo = 1;
    return NOERROR;
}
STDMETHODIMP CDiscFormatDataEvent::XFormatDataEvents::GetTypeInfo
                        (
                            UINT itinfo,
                            LCID lcid,
                            ITypeInfo FAR* FAR* pptinfo
                        )
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    *pptinfo = NULL;
 
    if(itinfo != 0)
        return ResultFromScode(DISP_E_BADINDEX);
    pThis->m_ptinfo->AddRef();
    *pptinfo = pThis->m_ptinfo;
    return NOERROR;
}
STDMETHODIMP CDiscFormatDataEvent::XFormatDataEvents::GetIDsOfNames
                        (
                            REFIID riid,
                            OLECHAR FAR* FAR* rgszNames,
                            UINT cNames,
                            LCID lcid,
                            DISPID FAR* rgdispid
                        )
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
    return DispGetIDsOfNames(pThis->m_ptinfo, rgszNames, cNames, rgdispid);
}
STDMETHODIMP CDiscFormatDataEvent::XFormatDataEvents::Invoke
                        (
                            DISPID dispidMember,
                            REFIID riid,
                            LCID lcid,
                            WORD wFlags,
                            DISPPARAMS FAR* pdispparams,
                            VARIANT FAR* pvarResult,
                            EXCEPINFO FAR* pexcepinfo,
                            UINT FAR* puArgErr
                        )
{
    METHOD_PROLOGUE(CDiscFormatDataEvent, FormatDataEvents)
 
    return DispInvoke(&pThis->m_xFormatDataEvents, pThis->m_ptinfo,
        dispidMember, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 15:49     Поясните предназначения каждого метода
Посмотрите здесь:

Поясните новичку C++
C++ Поясните разницу
Поясните алгоритм! C++
поясните действия C++
C++ Поясните задачу
Поясните, пожалуйста. C++
C++ Поясните код
Поясните код C++ WinAPI
C++ WinAPI Поясните с EditControl
Поясните элементарность C++
C++ Поясните задачу С++
Поясните код C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru