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

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

06.08.2015, 15:11. Показов 1707. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru