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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Книга по алгоритмам и структурам данных на С++ или на Си http://www.cyberforum.ru/cpp-beginners/thread1498057.html
Здравствуйте, форумчане. Посоветуйте книгу по алгоритмам и структурам данных на С++ или на Си.
C++ Используя рекурсивный вызов функции вычислить сумму заданного числа элементов ряда В программировании я просто дуб дубом, но нужно срочно сделать одну задачу в Qt. Сама задача: Используя рекурсивный вызов функции вычислить сумму заданного числа элементов ряда: 1/2+3/4+5/6+7/8+... http://www.cyberforum.ru/cpp-beginners/thread1498026.html
Оцените программу C++
Не давно написал эту программу. Охота услышать ваше мнение. Может для не которых она покажется простой, как одноклеточная бактерия, но для меня это ОГО-ГО-ГО =) cut Нарушение правил форума: Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.
Перевести функцию с Delphi на C++ C++
Ребята, может кто знает хотя бы примерно C или C++ , не понимаю код делфи, а функция на нём. type TSingleArray = Array of Single; procedure UncleHilbert(var FilterCoefficients: TSingleArray; N : Integer); var i,j : Integer; begin SetLength(FilterCoefficients,N); for i:=0 to (N div 4) do begin FilterCoefficients:=+2/(PI*(2*i-1));
C++ Программа дописывающая код http://www.cyberforum.ru/cpp-beginners/thread1497979.html
Мне дали задание, написать программу которая будет дописывать код. К примеру после кода {flex-direction:row;} она будет дописывать в эту скобку код {flex-direction:row;webkit-flex-direction:row;}. Я буду очень благодарен если поможете с этой программой.
C++ Присвоение массиву массива Здравствуйте. Создаю конструктор структуры, содержащей массивы. Присвоение массива массиву выдает ошибку: Can not assign to array type 'char'. typedef struct _TypeMessage { int iNumber; // char szDate; // ---> 10 char szTime; // ---> 8 int iTypeMessage; // int iCodeMessage; // подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
13.07.2015, 14:16  [ТС]     Идентификаторы интерфейсов
Да это это, только как они номер //{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????
 
Текущее время: 10:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru