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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Идентификаторы интерфейсов - C++

13.07.2015, 12:14. Просмотров 386. Ответов 4
Метки нет (Все метки)

Есть код что он означает
C++
1
2
3
4
5
6
static const IID IID_IMotion=
{0x692d03a4,0xc689,0x11ce,{0xb3,0x37,0x88,0xae,0x36,0xde,0x9e,0x4e}};
 
//{692D0eA5-C689-11CE-B337-88EA36DE9E4E}
static const IID IID_IVisual=
{0x692d03a5,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}};
Что они означают? Это заполняется какими то числами структура
И идентификаторы интерфейсов получаются и зачем они нужны?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 12:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Идентификаторы интерфейсов (C++):

Идентификаторы программ - C++
Доброе утро, ребят!:) Такой вопрос - попросили меня знакомые помочь с задачкой. Но я не могу толком понять условие. Что такое...

Правильные идентификаторы - C++
написать программу на СИ, производящую чтение из файла неограниченное кол-во строк и подсчитывающую кол-во правильных идентификаторов...

Ошибка: неопределенные идентификаторы - C++
Помогите, пожалуйста, найти ошибки - не проходят строки 10 и 14 #include<iostream> using namespace std; unsigned char type_PC; ...

Какие здесь идентификаторы? - C++
# include "c:\borlandc\include\iostream.h" # include "c:\borlandc\include\math.h" # include "c:\borlandc\include\conio.h" void...

Глобальные идентификаторы GUID - C++
Ребят помогите, задали курсач на тему "глобальные идентификаторы GUID". Перерыл всю сеть, не могу найти как создать свой идентификатор....

Неопределенные идентификаторы в матрице - C++
Добрый день. Помогите, пожалуйста, разобраться - возникает ошибка "'i' undeclared identifier" (начиная с 19-ой строки), а также...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.07.2015, 12:40 #2
Похоже на это: https://msdn.microsoft.com/en-us/lib.../cc815892.aspx
https://msdn.microsoft.com/en-us/lib.../cc839904.aspx
0
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
13.07.2015, 12:53 #3
C++
1
Visual Studio -> Tools -> Create GUID
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
13.07.2015, 14:16  [ТС] #4
Да это это, только как они номер //{692D0eA5-C689-11CE-B337-88EA36DE9E4E}
перевели в такой вид?
static const IID IID_IVisual=
{0x692d03a5,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}};

И откуда они вообще взяли этот номер на фанарь придумали? Это типо создаются идентификаторы интерфейсов в COM DLL или хз. что это.

Добавлено через 3 минуты
Щас приведу пример COM модели MFC простой где будет этот идентификатор. Только я не знаю как его запустить и проверить. Вообще там должна COM DLL создаваться, а я его в консольном приложении создаю, ну оно должно все рамно наверно работать.

Добавлено через 44 минуты
Вот код с примером класса COM MFC, я его просто пытаюсь в консольном приложении вызвать и ничего не вызывается.
Кликните здесь для просмотра всего текста
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
using std::cout;
#include <afxwin.h>
 
//идентификаторы интерфейсов
//{692D03A-C689-11CE-B337-88EA36DE9E4E}
static const IID IID_IOne=
{0x692d03a4,0xc689,0x11ce,{0xb3,0x37,0x88,0xae,0x36,0xde,0x9e,0x4e}};
 
//{692D0eA5-C689-11CE-B337-88EA36DE9E4E}
static const IID IID_ITwo=
{0x692d03a5,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}};
 
//------Интерфейсы COM-----
struct IOne : public IUnknown
{
    STDMETHOD_(void,One_Print)()=0;
};
struct ITwo : public IUnknown
{
    STDMETHOD_(void,Two_Print)()=0;
};
 
//-----Сам объект COM-----
class CMy_COM : public CCmdTarget
{
private:
    int m_pOne;
    int m_pTwo;
protected:
    CMy_COM():m_pOne(10),m_pTwo(20){TRACE("CMy_COM\n");}
    virtual ~CMy_COM(){TRACE("~CMy_COM\n");}
 
    //для динамического создания
    DECLARE_DYNCREATE(CMy_COM)
 
    //создаем вложеные классы интерфейсы
    //XOne m_xOne
    BEGIN_INTERFACE_PART(One,IOne)
        STDMETHOD_(void,One_Print)();
    END_INTERFACE_PART(One)
    
    //XTwo m_xTwo
    BEGIN_INTERFACE_PART(Two,ITwo)
        STDMETHOD_(void,Two_Print)();
    END_INTERFACE_PART(Two)
};
 
IMPLEMENT_DYNCREATE(CMy_COM,CCmdTarget)
 
//-----------определение функций интерфейсов-------
//---IOne
//1.Стандарт из IUnknown
STDMETHODIMP_(ULONG) CMy_COM::XOne::AddRef()
{
    TRACE("CMy_COM::XOne::AddRef\n");
    METHOD_PROLOGUE(CMy_COM,One)
    return pThis->ExternalAddRef();
}
 
STDMETHODIMP_(ULONG) CMy_COM::XOne::Release()
{
    TRACE("CMy_COM::XOne::Release\n");
    METHOD_PROLOGUE(CMy_COM,One)
    return pThis->ExternalRelease();
}
 
STDMETHODIMP CMy_COM::XOne::QueryInterface(REFIID iid, LPVOID* ppvObj)
{
    TRACE("CMy_COM::XOne::QueryInterface iid=%d", iid);
    METHOD_PROLOGUE(CMy_COM,One)
    return pThis->ExternalQueryInterface(&iid,ppvObj);
}
 
//2. собственная функция
STDMETHODIMP_(void) CMy_COM::XOne::One_Print()
{
    TRACE("CSpaceship::XMotion::Fly\n");
    METHOD_PROLOGUE(CMy_COM,One)
    TRACE("m_pOne=%d\n",pThis->m_pOne);
    return;
}
 
//-----ITwo-----
//1.Стандарт из IUnknown
STDMETHODIMP_(ULONG) CMy_COM::XTwo::AddRef()
{
    TRACE("CMy_COM::XOne::AddRef\n");
    METHOD_PROLOGUE(CMy_COM,Two)
    return pThis->ExternalAddRef();
}
 
STDMETHODIMP_(ULONG) CMy_COM::XTwo::Release()
{
    TRACE("CMy_COM::XOne::Release\n");
    METHOD_PROLOGUE(CMy_COM,Two)
    return pThis->ExternalRelease();
}
 
STDMETHODIMP CMy_COM::XTwo::QueryInterface(REFIID iid, LPVOID* ppvObj)
{
    TRACE("CMy_COM::XOne::QueryInterface iid=%d", iid);
    METHOD_PROLOGUE(CMy_COM,Two)
    return pThis->ExternalQueryInterface(&iid,ppvObj);
}
 
//2. собственная функция
STDMETHODIMP_(void) CMy_COM::XTwo::Two_Print()
{
    TRACE("CMy_COM::XTwo::Two_Print\n");
    METHOD_PROLOGUE(CMy_COM,Two)
    TRACE("m_pTwo=%d\n",pThis->m_pTwo);
    return;
}
 
 
int main()
{
    cout <<"COM-klient\r\n";
 
    IUnknown* pIUnk=nullptr;
    IOne* pIOne=nullptr;
    ITwo* pITwo=nullptr;
 
    CMy_COM* p = (CMy_COM*)CMy_COM::CreateObject();
    pIUnk=&p->m_xOne;
    
    //передаем идентификатор интерфейса и получаем интерфейс
    pIUnk->QueryInterface(IID_IOne,(void**)&pITwo);
    
    if(pITwo==nullptr){cout <<"ne naideno\r\n";}
    else
    {
        pITwo->QueryInterface(IID_ITwo,(void**)&pIOne);
        pITwo->Two_Print();
    }
    if(pIOne==nullptr){cout <<"ne naideno\r\n";}
    else{pIOne->One_Print();}
    
    if(pIUnk!=nullptr)pIUnk->Release();
    if(pIOne!=nullptr)pIOne->Release();
    if(pITwo!=nullptr)pITwo->Release();
 
    cout <<"end COM-klient\r\n";
    return 0;
}

и есть там два идентификатора, где брать эти номера для идентификаторов? И что это за код? Это вообще типо MFC DLL должно создаваться и типо номер этот в регистр добавляется и потом загружается. Что то я запутался с этим ком и ничего он не работает. Оно наверно не будет работать так да? Чтобы работало нужно DLL создавать, регистрировать его и затем уже в клиенте запускать и использовать QueryInterface да? Как вообще номер этот придумали? Его что от фанаря взяли?

Добавлено через 1 минуту
Где брать эти номера кто знает????
C++
1
2
3
4
5
6
7
8
//идентификаторы интерфейсов
//{692D03A-C689-11CE-B337-88EA36DE9E4E}
static const IID IID_IOne=
{0x692d03a4,0xc689,0x11ce,{0xb3,0x37,0x88,0xae,0x36,0xde,0x9e,0x4e}};
 
//{692D0eA5-C689-11CE-B337-88EA36DE9E4E}
static const IID IID_ITwo=
{0x692d03a5,0xc689,0x11ce,{0xb3,0x37,0x88,0xea,0x36,0xde,0x9e,0x4e}};
Добавлено через 52 секунды
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Visual Studio -> Tools -> Create GUID
А что это ты за путь показал? это там есть такая прога которая номера создает? , щас посмотрю.

Добавлено через 3 минуты
rikimaru2013, ну да нашел где генерируется этот номер, там утилита есть "Создание GUID"

Добавлено через 27 минут
Есть такие кто создавал элементы ActiveX свои для MFC????
0
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
13.07.2015, 14:52 #5
Цитата Сообщение от ninja2 Посмотреть сообщение
Где брать эти номера кто знает????
Придумывать наугад, желательно при помощи соответствующего инструмента, вооружённого пристойным генератором случайных чисел. Такой инструмент (guidgen.exe) входит в состав VisualStudio, есть также всяческие сайты, готовые помочь в нелёгком деле генерации.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 14:52
Привет! Вот еще темы с ответами:

Ошибка: Необъявленные идентификаторы - C++
ошибку выдает: q1,q2 не объявленные идентификаторы? но они же объявлены) думаю, наверное, надо вначале как-нибудь объявить. но как, если...

Идентификаторы: createHanningWindow и phaseCorrelate не найдены - C++
Пытался скомпилировать демку #include &quot;opencv2/core/core.hpp&quot; #include &quot;opencv2/highgui/highgui.hpp&quot; #include...

Вложенные циклы и необъявленные идентификаторы - C++
есть часть кода: for(int a=0; a&lt;3;a++) if (a=0) int b=1; else if (a=1) int b=2; else if (a=2) int b=3; for(int c=0; c&lt;3;c++) ...

Подсветить другим цветом идентификаторы - C++
Вывести на экран содержимое файла с программой на С, подсвечивая другим цветом все идентификаторы типа int. (если можно с...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.07.2015, 14:52
Ответ Создать тему
Опции темы

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