14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
|
1 | |
Изучение COM, C++ ATL28.01.2018, 22:47. Показов 6081. Ответов 10
Метки нет (Все метки)
Добрый день.
Ищу самый простой материал по изучению технологии COM. Нужно создать COM полигон и вывести его в MFC окно. Везде очень старый или практически не понятный материал. Хотелось бы на пальцах понять как это работает. Заранее благодарю! Добавлено через 22 часа 27 минут Нашел одно интересное пособие и собственно получилось сделать калькулятор. При билде x86 всё замечательно работает, а при билде x64 выбивает ошибку. Вот код отладки... Кликните здесь для просмотра всего текста
"AtlClientApp.exe" (Win32). Загружено "E:\project\AtlGettingStarted\x64\Release\AtlClientApp.exe". Символы загружены.
"AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\ntdll.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\kernel32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\KernelBase.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\ole32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\combase.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\ucrtbase.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\rpcrt4.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\bcryptprimitives.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\gdi32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\gdi32full.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\msvcp_win.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\user32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\win32u.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\sechost.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\oleaut32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\vcruntime140.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\msvcp140.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\imm32.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\kernel.appcore.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\msvcrt.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\uxtheme.dll". Невозможно найти или открыть PDB-файл. "AtlClientApp.exe" (Win32). Загружено "C:\Windows\System32\clbcatq.dll". Невозможно найти или открыть PDB-файл. Вызвано исключение по адресу 0x00007FF8FBA93FB8 в AtlClientApp.exe: исключение Microsoft C++: _com_error по адресу памяти 0x00000090E7CFFB80. Возникло необработанное исключение по адресу 0x00007FF8FBA93FB8 в AtlClientApp.exe: исключение Microsoft C++: _com_error по адресу памяти 0x00000090E7CFFB80. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. AtlClientApp.exe вызвал срабатывание точки останова. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Необработанное исключение по адресу 0x00007FF74F761AD4 в AtlClientApp.exe: Код инcтрументирования объектов cookie стека обнаружил переполнение буфера, связанное со стеком.. Программа "[16296] AtlClientApp.exe" завершилась с кодом 0 (0x0). Добавлено через 5 часов 30 минут Так и не разобрался как сделать например круг на COM сервере и вывести его в PicBox MFC.
0
|
28.01.2018, 22:47 | |
Ответы с готовыми решениями:
10
ATL Win32 + ATL поделитесь ATL На зачете спросили по ATL COM |
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
29.01.2018, 08:07 | 2 |
Leningradeс, если объект 32 то и сервер должен быть 32. То же самое про 64
1
|
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
|
29.01.2018, 08:55 [ТС] | 3 |
Я так и понял, спасибо.
а на счет создания графических объектов не поможете? нужен класс poligon например, и например 3 метода которые создают треугольник квадрат круг по запросу с клиента оконного MFC. мне код не нужен, а вот общее объяснение как это сделать, какие типы методов использовать.
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
29.01.2018, 19:06 | 4 |
Leningradeс,
1 что значит создают? рисуют в предоставленное окно? 2 берём придумываем интерфейс правильный многоугольник с методом нарисовать с аргументами окно, координаты центра, радиус описанной окружности и количество углов 3 пишем для него h и IDL файлы, при помощи MIDL генерируем TLB файл 4 пишем реализацию интерфейса способную сделать то что мы задумали 5 не забываем о том что нам нужны фабрика и функции регистрации / разрегистрации 6 в клиентской программе создаём объект, запрашиваем интерфейс, вызываем его метод PS конечно перед запуском клиентской программы объект должен быть зарегистрирован в системе Пример можно посмотреть тут https://www.cyberforum.ru/com-... ost3538077 Некоторые инструменты IDE или библиотеки вроде ATL могут сделать часть работы за вас, в примере они не рассматриваются - это максимально близкий к собственно COM пример
0
|
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
|||||||||||
29.01.2018, 21:58 [ТС] | 5 | ||||||||||
Да у меня зарегистрирована DLL с ActiveX объектом
На сейчас у меня COM сервер есть и там рисуется ActiveX многоугольник с Методами
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
30.01.2018, 07:55 | 6 |
Leningradeс, и что?
0
|
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
|||||||||||
30.01.2018, 08:15 [ТС] | 7 | ||||||||||
То есть пока что у меня очень маленькая реализация COM объекта, тестировал в "ActiveX Control Test Container", надо создать некий метод для передачи нарисованного объекта в MFC клиент.
Когда я делал калькулятор, там была просто передача указателя на результат сложения и других операций. AtlClient.cpp
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
30.01.2018, 08:22 | 8 |
Leningradeс, сделайте на стороне сервера объект канва который может рисовать на стороне сервера и передайте его в объект многоугольника - пусть он сам себя нарисует на сервере
0
|
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
||||||
30.01.2018, 21:22 [ТС] | 9 | |||||
Я создал объект ActiveX, он строит многоугольник, но у меня не получается вывести с помощью С++ в окно MFC.
Вот есть кнопка...
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
|
|
31.01.2018, 07:57 | 10 |
Leningradeс, https://msdn.microsoft.com/ru-... s.85).aspx
1
|
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
|
|
31.01.2018, 09:54 [ТС] | 11 |
vxd, я эту функцию и использую я разобрался как решить мою задачу, спасибо за все подсказки!
У меня осталась небольшая проблема с математикой, но думаю разберусь.
1
|
31.01.2018, 09:54 | |
31.01.2018, 09:54 | |
Помогаю со студенческими работами здесь
11
Литература по ATL/WTL. ATL Service и переодическая задача Создание коллекции с использованием ATL! Регистрация ActiveX (.NET , ATL) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |