Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

ActiveX добавление страницы свойств

06.08.2015, 15:11. Показов 1677. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь добавить свойства к элементу ActiveX. Создал класс страницы свойств, там сразу и диалог создается. А дальше в книге смутно описано что делать. Я на диалог добавил два элемента управления. Вообще похоже два вида страниц свойств есть в ActiveX одни которые встраиваются в редактор, а другие которые выводятся в собственном диалоге. Ну добавил я на диалог два элемента управления, а дальше что? Нада ж переменные к ним добавить, а куда в какой класс эти переменные добавлять? В коде который в книге там вроде переменные не добавляются. Ни че не ясно что делать.

Добавлено через 8 минут
Только глянул в карту свойств мое новое свойство не добавилось, а хотя должно было добавится пишут.

Добавлено через 29 секунд
Добавилась запись в idl файл и все
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.08.2015, 15:11
Ответы с готовыми решениями:

Как избавиться при построении ActiveX от ненужных свойств UserControl'a
Хочу развить VBконтрол Timer. Для этого в проекте ActiveX.dll строю свой ActiveX xTimer на основе UserControl. Но при этом после...

ActiveX. Где я могу найти описание методов,событий,свойств этого элемента?
Подскажите пожалуйста! Вставляю в страничку объект ActiveX, примерно так: <object ID='Microsoft Forms 2.0 CommandButton' ...

Добавление свойств объекту
Как в цикле добавить свойства объекту? $('#b-print').click(function() { // var s = { "name1":"val1",...

8
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
07.08.2015, 20:58  [ТС]
В визуальный редактор свойства автоматом добавляются, в книге пишут что свойства должны с диалога вроде выводится, как это сделать? Там же создается класс свойств и диалог и кнопку aplly, значит для свойств можно диалог вызвать, как это сделать?

Это мне нужно самому добавить кнопку и вызвать функцию DoVerb????

Добавлено через 6 минут
ниче не ясно, DoVerb нельзя вызвать. Как мне получить диалоговое окно страницы свойст к ктоторому я добавил элементы управления? У меня когда я помещаю в редактор VS у меня при выборе свойсва отображается стандартное окно со свойствами редактора, а мне нужно проверить мой диалог с кнопкой Apllyi???
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
07.08.2015, 21:03
:-)
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
07.08.2015, 21:06  [ТС]
Ferrari F1, Пишут что в меню Сервис должен быть пункт "ActiveX Control Test Container" его нужно запустить и в нем тестировать контейнер, там и страница свойств отобразится, а у меня его нету, что делать?
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
07.08.2015, 21:07
ninja2, мне кажется проблема в том, что никто на данном подфоруме не сможет тебе помочь)
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
08.08.2015, 08:22  [ТС]
Ferrari F1, смогут. Я от смотрел на рисунок схему как отображаются свойства и там видно что клиент получает указатель на IUnknown и через него вызывает свойства. Вроде как то так хз. как делать . Я не знаю как отобразить диалог который мы создаем, а сами свойства они на автомате отображаются в VS. Для чего создается диалог собственный в ActiveX для свойств и где он вызывается???? Ниче не ясно.

Добавлено через 9 минут
Это похоже тестовая программка из справки, щас попробую в нее добавить Control и посмотреть что получится

Добавлено через 18 минут
Да там специальная тестовая программка есть из справки, в нее загружаем контейнер и смотрим свойства, но у моего контейнера ничего свойства не отображаются

Добавлено через 4 минуты
Все добавил в сервис, появилась эта прога, только как сделать чтобы мои свойства отображались. хз. что там не так. Да и вообще как мне с моего диалогового окна вывести свойства контрола?

Добавлено через 44 минуты
ниотображаются свойства, чтобы неделал ппц.

Добавлено через 1 час 51 минуту
Почему у меня не отображается страница свойств? Вот ее код:
Кликните здесь для просмотра всего текста
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
// My_prop.h: объявление CMy_prop
 
 
#pragma once
#include "resource.h"       // основные символы
 
 
#include "ATLDiceSvr1_i.h"
 
using namespace ATL;
 
// CMy_prop
 
class ATL_NO_VTABLE CMy_prop :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CMy_prop, &CLSID_My_prop>,
    public IPropertyPageImpl<CMy_prop>,
    public ATL::CDialogImpl<CMy_prop>
{
public:
    CMy_prop()
    {
        m_dwTitleID = IDS_TITLEMY_PROP;
        m_dwHelpFileID = IDS_HELPFILEMY_PROP;
        m_dwDocStringID = IDS_DOCSTRINGMY_PROP;
    }
 
    DECLARE_PROTECT_FINAL_CONSTRUCT()
 
    HRESULT FinalConstruct()
    {
        return S_OK;
    }
 
    void FinalRelease()
    {
    }
 
    enum {IDD = IDD_MY_PROP};
 
DECLARE_REGISTRY_RESOURCEID(IDR_MY_PROP)
 
 
BEGIN_COM_MAP(CMy_prop)
    COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()
 
BEGIN_MSG_MAP(CMy_prop)
    CHAIN_MSG_MAP(IPropertyPageImpl<CMy_prop>)
END_MSG_MAP()
 
// Прототипы обработчика:
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
 
    STDMETHOD(Apply)(void)
    {
        ATLTRACE(_T("CMy_prop::Apply\n"));
        for (UINT i = 0; i < m_nObjects; i++)
        {
            // Здесь можно сделать что-нибудь важное
            // ICircCtl* pCirc;
            // m_ppUnk[i]->QueryInterface(IID_ICircCtl, (void**)&pCirc);
            // pCirc->put_Caption(CComBSTR("something special"));
            // pCirc->Release();
        }
        m_bDirty = FALSE;
        return S_OK;
    }
};
 
 
OBJECT_ENTRY_AUTO(__uuidof(My_prop), CMy_prop)

Все по умолчанию, ничего нового не добавлял. Компилирую и свойства не выводятся, а должна пустая страница вывестись наверно.

Добавлено через 8 часов 0 минут
Разобрался, нужно было добаить интерфейс ISpecifyPropertyPages к классу, у меня создан объект без поддержки этого интерфейса, поэтому свойства не отображались, а щас начали отображатся.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.08.2015, 09:23
Лучший ответ Сообщение было отмечено castaway как решение

Решение

Цитата Сообщение от ninja2 Посмотреть сообщение
Вроде как то так хз. как делать
Цитата Сообщение от ninja2 Посмотреть сообщение
Для чего создается диалог собственный в ActiveX для свойств и где он вызывается???? Ниче не ясно.
Цитата Сообщение от ninja2 Посмотреть сообщение
Это похоже тестовая программка из справки, щас попробую в нее добавить Control и посмотреть что получится
Цитата Сообщение от ninja2 Посмотреть сообщение
Все добавил в сервис, появилась эта прога, только как сделать чтобы мои свойства отображались. хз. что там не так.
Цитата Сообщение от ninja2 Посмотреть сообщение
ниотображаются свойства, чтобы неделал ппц.
Цитата Сообщение от ninja2 Посмотреть сообщение
Почему у меня не отображается страница свойств?
Цитата Сообщение от ninja2 Посмотреть сообщение
Компилирую и свойства не выводятся, а должна пустая страница вывестись наверно.
Цитата Сообщение от ninja2 Посмотреть сообщение
Разобрался, нужно было добаить интерфейс ISpecifyPropertyPages к классу, у меня создан объект без поддержки этого интерфейса, поэтому свойства не отображались, а щас начали отображатся.
С ужасом представляю себе клиента такого ActiveX.

То, что ты описываешь, называется "тычу-носом-driven-development".
Вместо того, чтобы сесть, открыть MSDN, найти и понять нужные главы про ActiveX, разобрать коды
примеров, прочесть, в конце концов, пару нормальных книжек про COM (не ATL, не все эти CComBase и
IMPLEMENT_OLECREATE, а именно по самой сути технологии), ты сразу пытаешься что-то лепить из
неизвестно чего, совокупляя между собой диалоги с и автосгенерированные макросы в причудливых
позах, не понимая нижележащих механизмов и надеясь, что оно само вдруг чудом заработает, если
только переставить местами болтики и винтики. Не заработает.

Я уже писал однажды, повторюсь и здесь:
Цитата Сообщение от Убежденный Посмотреть сообщение
Осваивать COM нужно именно в "сыром" виде. То есть, голые интерфейсы, ко-классы, фабрики,
DllGetClassObject, подсчет ссылок, apartments, CoInitialize(Ex), inproc/outproc/remote, серверы в
exe, IDL, суррогатные процессы, безопасность, моникеры... И уже только потом читать книжки для
продвинутых и использовать ATL, StlSoft и тому подобное.
Вот для своего ActiveX ты какой задавал ThreadingModel ? Apartment ? Both ? А почему, знаешь ?
Или вот сервер в exe: он у тебя крутит цикл оконных сообщений или нет ? А должен ?
А COM Security ты как инициализируешь ? А поддержка агрегации у твоих компонентов есть ?
И т.д. Не зная ответов на эти и другие вопросы, лепить что-то в COM/OLE/ActiveX нельзя,
просто будут ошибки одна на другой сидеть и третьей погонять.

Вот подборочка неплохих, на мой взгляд, книг для достаточно быстрого старта:

"Сущность технологии COM" (Д. Бокс)
"Основы COM" (Д. Роджерсон)
"ActiveX для профессионалов" (А. Деннинг)

А это для уже немного продвинутых:

"Inside COM+: Base Services" (G. Eddon, H. Eddon)
"Understanding DCOM" (W. Rubin, M. Brain)
"Microsoft RPC Programming Guide" (W. Rosenberry, J. Shirley)
"Inside OLE" (K. Brockschmidt)

В MSDN есть целый раздел по COM, там описывается все - и IUnknown, и IDispatch, и
Automation, и IDL, и apartments, ну короче, читать все от корки до корки.

COM
https://msdn.microsoft.com/en-... 85%29.aspx

На RSDN есть масса полезных и интересных статей по COM, см. разделы

COM/DCOM/COM+
http://rsdn.ru/summary/247.xml

ATL
http://rsdn.ru/summary/254.xml

Например (подборка на скорую руку):

Использование ATL Registrar
http://rsdn.ru/article/atl/atlregistrar.xml

COM - потоки и контексты
http://rsdn.ru/article/com/COM_TnC/COM_TnC.xml

Понимание подразделений COM
http://rsdn.ru/article/com/apartmnt.xml

Секреты маршалинга
http://rsdn.ru/article/com/marsh.xml

Защита в DCOM/COM+
http://rsdn.ru/article/com/comsec.xml

Создание COM-коллекций
http://rsdn.ru/article/com/comcoll.xml

Страницы свойств COM-объектов
http://rsdn.ru/article/com/proppages.xml

Connection points
http://rsdn.ru/summary/2167.xml

И еще рекомендую сюда заглянуть:

Introduction to COM - What It Is and How to Use It.
http://www.codeproject.com/Art... -to-Use-It

Understanding The COM Single-Threaded Apartment Part 1
http://www.codeproject.com/Art... artment-Pa

Understanding The COM Single-Threaded Apartment Part 2
http://www.codeproject.com/Art... -Apartment

Вот после того, как освоишь классику, можно садиться и спокойно реализовывать
свои компоненты, хоть на ATL, хоть на голом COM, хоть на черте лысом.
2
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
08.08.2015, 10:43  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Вот для своего ActiveX ты какой задавал ThreadingModel ? Apartment ? Both ? А почему, знаешь ?
Читал за это но не понял, там что то с потокобезопаностью связано, я это не разобрал, Apartment по умолчанию.
Цитата Сообщение от Убежденный Посмотреть сообщение
И т.д. Не зная ответов на эти и другие вопросы, лепить что-то в COM/OLE/ActiveX нельзя,
просто будут ошибки одна на другой сидеть и третьей погонять.
Я пример из книги взял там все описывается как что делать, только не все, бывают проблемы где откуда что берется и среда там VS6, а у меня VS10. Я глубоко COM учить не собираюсь. Вообще в книге пишут что создавать мощьные ActiveX элементы в ATL будет получатся без глубоких знаний ATL и наверно ж самого COM. Просто алгоритм знать не вдаваясь во внутрянку. .

Добавлено через 1 минуту
Убежденный, то столько литературы по COM и ActiveX, то для разработчиков, а я пользователь, я главу 30 страниц прочитал и никак разобрать нимогу пример

Добавлено через 1 минуту
Там еще кнопка в свойствах aplly, для нее мы добавляем обработчик, а что происходит когда мы ок нажимаем, этот же самый aplly вызывается?

Добавлено через 2 минуты
Да когда мы Ок нажимаем тоже самое apply вызывается, одна функция для двух кнопок

Добавлено через 3 минуты
Я почти сделал готовый ActiveX осталось события добавить и все, можно тестить

Добавлено через 10 минут
Там свойства передаются, но они сам объект не меняют потому что объект инициализируется в конструкторе и переменные которые используют свойства второй раз не меняются. Нужно через события как то их менять.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
08.08.2015, 10:52
Ладно, в любом случае желаю удачи !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2015, 10:52
Помогаю со студенческими работами здесь

Добавление свойств TreeView
Хочу не используя Tag добавить свойства пунктам TreeView. Делаю так Public Class myTreeNode Inherits TreeNode Public marray...

Добавление в ROT ActiveX.exe сервера на VB
Очень нужна ROTHook.dll M.Curland-a. Если кто реализовывал подобную функциональность сам -поделитесь опытом плз.

Добавление свойств в базовый класс
Товарищи, подскажите, как в приличном обществе принято решать такую задачу: Имеем, например, такую иерархию классов class A_Base {...

Программное добавление свойств классу
У нас есть пустой клас public class testclass { } как можно в него добавить свойства ввида public string teststring1 { get;...

Добавление свойств к документу ворд
Необходимо, чтобы в свойствах документа Words помимо основных свойств отображалось нужное мне свойство как на картинке. Я слышал, что...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru