Регистрация контролов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Регистрация контролов

Сообщение d3drm » 18.04.2005 (Пн) 17:31

К проекту я подключил некоторые компоненты, например RichTextBox, CommonDialog и т.п. Их, как я понимаю, регистрировать надо обязательно. А как на счет стандартных контролов типа textBox, CommandButton?
ХЎ

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 18.04.2005 (Пн) 17:41

Если они стандартные - то их не надо регистрировать, ммм?

Регистрировать (в реестре) надо как раз нестандартные компоненты. Но если их лень регистрировать - можно их библиотеки просто положить в ту же директорию, где ЕХЕшник лежит (проверенно как раз на richtx32.ocx).
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 18.04.2005 (Пн) 17:42

А их-то зачем? Не надо.
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 18:58

Гм. Подводя черту вышесказанному замечу: эти контролы хрантся в msvbvm60.dll. Вот именно эта dll и должна быть зарегситрирована в системе. Без нее не одна программа на basic'е(пусть даже без окон вообще) работать не будет
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.04.2005 (Пн) 19:01

ANDLL, почему тогда richtx32.ocx отдельно хранится?
ХЎ

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 18.04.2005 (Пн) 19:07

Стандартные контролы регистрируются при установки винды, также они используются в разных виндосовских приложениях, типо блокноты, гиперы всякие, а контролы так называемые не "стандартные", в ХП регистрить хуть как надо, в 98 помоему не обязательно!
А если не зарегистришь то получишь
Код: Выделить всё
Run-time error '429'
Activex component can't create object

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 19:07

Он не стандартный. И создан он не только для basic'а. А Textbox - это вообще не ActiveX-контрол. Его нельзя вставить, например на форму C++.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 18.04.2005 (Пн) 19:09

ANDLL писал(а):Он не стандартный. И создан он не только для basic'а. А Textbox - это вообще не ActiveX-контрол. Его нельзя вставить, например на форму C++.

Кто не стандартный??? :oops:

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 19:12

step писал(а):Стандартные контролы регистрируются при установки винды, также они используются в разных виндосовских приложениях, типо блокноты, гиперы всякие, а контролы так называемые не "стандартные", в ХП регистрить хуть как надо, в 98 помоему не обязательно!
А если не зарегистришь то получишь
Код: Выделить всё
Run-time error '429'
Activex component can't create object

Не правда. В частности, Гиперы и блокноты вообще не используют ActiveX-контролы. И регистрировать их надо в любой windows.

step писал(а):
ANDLL писал(а):Он не стандартный. И создан он не только для basic'а. А Textbox - это вообще не ActiveX-контрол. Его нельзя вставить, например на форму C++.

Кто не стандартный??? :oops:


Пардон... RichTextBox.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 18.04.2005 (Пн) 19:13

А если в с++ нажать по диалогу правой кнопкой мыши, выбрать инсерт АктивХ контрол, далее в списке выбрать Microsoft FORM 2.0 TEXTBOX

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 19:17

Сравни список свойств у этого TextBox'а с тем, что в VB6. Небольшая разница заметна? :lol:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 18.04.2005 (Пн) 19:20

ANDLL писал(а):
step писал(а):Стандартные контролы регистрируются при установки винды, также они используются в разных виндосовских приложениях, типо блокноты, гиперы всякие, а контролы так называемые не "стандартные", в ХП регистрить хуть как надо, в 98 помоему не обязательно!
А если не зарегистришь то получишь
Код: Выделить всё
Run-time error '429'
Activex component can't create object

Не правда. В частности, Гиперы и блокноты вообще не используют ActiveX-контролы. И регистрировать их надо в любой windows.

step писал(а):
ANDLL писал(а):Он не стандартный. И создан он не только для basic'а. А Textbox - это вообще не ActiveX-контрол. Его нельзя вставить, например на форму C++.

Кто не стандартный??? :oops:


Пардон... RichTextBox.


Ну а ты возьми сотри папку system, и запусти гипер, мне кажеться, что он у тя не пойдёт! :lol: А блокнот использует текстбокса контрол это точно!!!

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 18.04.2005 (Пн) 19:25

Вот сравни местоположение!!!
Вложения
Сравни.rar
Сравни!
(44.21 Кб) Скачиваний: 40

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 19:33

А что, в папке system только ActiveX контролы?

А вот на счет блокнота, давай уясним.
Есть такой контрол VB.TextBox. Этот контрол стандартный для VB. Он не является ActiveX в полном смысле этого слова. Он ТОЛЬКО для внутреннего использования в VB6. И нигде, ни в VB5, ни в VBA его использовать больше нельзя. Его дефолтовый интерфейс нигде не объявлен, и не может исполшьзоваться за пределами конкретной VB-программы(это из COM).
Есть еще такой: MSForms.TextBox. Это ActiveX-контрол. Его можно использовать в любом ActiveX-контейнере, будь то VBA-форма или C++ форма, или же форма VB6(нажми Ctrl+T и выбери MSForms). У него есть дефолтовый интерфейс, который объявлен как и где пологается.

Это РАЗНЫЕ контролы.

То, что в блокноте вообще, думается мне не ActiveX-контролы. Это просто окно класса Edit. Стандартное для windows. Ну уж точно не VB.TextBox!
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 20:03

Кстати, Dependency Walker(из пакета Visual Studio) утверждает, что в Notepad.exe нет зависимости на OLE32.dll. А это значит, что блокнот вообще не использует COM. Так ведь?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 18.04.2005 (Пн) 20:18

2 ANDLL
Зачем блокноту COM? Один edit, одно меню. Ну еще он использует несколько API'шек comdlg32.dll. И все.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.04.2005 (Пн) 20:23

Собственно, мы тут выдвигаем тезисы супротив сего:
step писал(а):А блокнот использует текстбокса контрол это точно!!!

То бишь, выясняем разницу, между голым Edit, VB.TextBox и MSForms.TextBox.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.04.2005 (Пн) 20:27

У Блокнота класс бокса - Edit. А в VB6 - ThunderRT6TextBox. Это для справки.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.04.2005 (Вт) 1:01

ANDLL писал(а):Есть такой контрол VB.TextBox. Этот контрол стандартный для VB. Он не является ActiveX в полном смысле этого слова. Он ТОЛЬКО для внутреннего использования в VB6. И нигде, ни в VB5, ни в VBA его использовать больше нельзя. Его дефолтовый интерфейс нигде не объявлен, и не может исполшьзоваться за пределами конкретной VB-программы(это из COM).

VB.TextBox является COM-объектом в полном смысле этого слова, поддерживает IDispatch, и может быть передан в любое приложение, которое работает через IDispatch - хоть на VBS, хоть на VC. Но создаваться он может только из проги на VB.

Его дефолтовый интерфейс объявлен в нём же самом (IDispatch::GetTypeInfo вернёт всю информацию о нём)
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.04.2005 (Вт) 1:05

ANDLL писал(а):Кстати, Dependency Walker(из пакета Visual Studio) утверждает, что в Notepad.exe нет зависимости на OLE32.dll. А это значит, что блокнот вообще не использует COM. Так ведь?

Не так. Проги на VB имеют зависимость только от msvbvm, однако используют COM. Поэтому надо просматривать всё дерево зависимостей целиком (да и этого мало - вызовы LoadLibrary в рантайме там не отображаются)
Определить, использует ли прога COM, в общем случае невозможно.
Изображение

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 19.04.2005 (Вт) 1:16

Предлагаю к своим программам прилагать свою папку System.
Будет работать везде.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 7:15

tyomitch писал(а):
ANDLL писал(а):Кстати, Dependency Walker(из пакета Visual Studio) утверждает, что в Notepad.exe нет зависимости на OLE32.dll. А это значит, что блокнот вообще не использует COM. Так ведь?

Не так. Проги на VB имеют зависимость только от msvbvm, однако используют COM. Поэтому надо просматривать всё дерево зависимостей целиком (да и этого мало - вызовы LoadLibrary в рантайме там не отображаются)
Определить, использует ли прога COM, в общем случае невозможно.


Обычно, все-таки OLE32 линкуется статически... Смысла использовать динамическое подключение - практически никакого. И, кстати, если просмотреть все дерево зависимостей, то в программах VB есть ссылка на OLE32, а у блокнота нету вообще.

Когда я говорил, что дефлтовый интерфейс нигду не объявлен, я имел ввиду, что нельзя обращаться к нему через vtable(т.е. он не объявлен в tlb)... Или можно, используя IDispatch::GetIDsOfNames?

И еще: я не говорил, что TextBox не является COM-компонентом, яч говорил, что он не является ActiveX, а это как раз и подразумевает динамическое добавление в любой ActiveX-контейнер.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.04.2005 (Вт) 8:47

Через VTable - нельзя, а чем IDispatch::Invoke хуже?
ActiveX-компонент не обязан поддерживать раннее связывание.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 9:40

tyomitch писал(а):Через VTable - нельзя, а чем IDispatch::Invoke хуже?

А что не хуже?

tyomitch писал(а):ActiveX-компонент не обязан поддерживать раннее связывание.

Зато обязан покдлючатся через Form.Controls.Add. Или через <OBJECT> в HTML.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 19.04.2005 (Вт) 12:59

|kerish| писал(а):Предлагаю к своим программам прилагать свою папку System.
Будет работать везде.

А ещё операционку в подарок! :lol: В System32 (пардон) находятся не только же компоненты, там ещё очень много всего интересного!
Последний раз редактировалось step 19.04.2005 (Вт) 13:14, всего редактировалось 1 раз.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 13:06

А в WindowsXP. к примеру, там всего файлов десять :) Так что, это еще смотря какой windows :D
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 19.04.2005 (Вт) 13:17

На счёт блокнота, он использует ComDLG, и не только!!!
Вложения
ACDSee 7.0 BMP Image.rar
(65.8 Кб) Скачиваний: 44

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 13:19

Использует. Но в виде API-функций, а не ActiveX-контрола.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 19.04.2005 (Вт) 18:09

Разве?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.04.2005 (Вт) 18:20

ANDLL писал(а):
tyomitch писал(а):Через VTable - нельзя, а чем IDispatch::Invoke хуже?

А что не хуже?

А чем хуже-то? :-D
Изображение

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 21

    TopList