Active X

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Active X

Сообщение WEB_13 » 08.08.2003 (Пт) 5:44

Может кто-нибудь знает, где найти OCXы для VB, чтоб с интерфейсом Windows XP! (диалоговое окно, прогрессбар и т.д.)? Плиз!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.08.2003 (Пт) 7:42

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 09.08.2003 (Сб) 3:42

Спасибо! Получилось!!! Вот только почему используется именно Microsoft Windows Common Controls 5.0, а не Microsoft Windows Common Controls 6.0 и можно ли сделать так, чтобы в программы не добавлять этих элемнтов (они же там не всегда нужны)? И ещё почемуто во фреёме вокруг радиокнопок и самих кнопок присутствует чёрный ореол!

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 12.08.2003 (Вт) 4:31

Понял наконец! Если кому, то радиокнопку и кнопку надо поместить на элемент управления PictureBox предварительно поставив у него свойство BorderStyle как none и тогда всё ОК!
Только вот ещё вопрос, как этот манифест затащить в файл ресурсов?
Просто туда вставил, как custom, id=24 (в форуме промелькнуло) - ничего не получается!!!???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.08.2003 (Вт) 8:03

Нужно создать файл xml, указать его в качестве источника для открытия custom ресурса (появится категория "CUSTOM" и в ней пункт "101"), дважды кликнуть на этом "101" и в появившемся диалоге указать имя категории 24, имя ресурса 1
Вложения
Манифест.zip
Демонстрация ;)
(12.02 Кб) Скачиваний: 129
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 12.08.2003 (Вт) 9:58

С радио кнопками будет трабла... если они в Frame у меня был отдельно контрол но надо искать..
Moderator VBStreets
---------------------------

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 1:16

Что-то ничего неполучается!!! Создал файл manifest.xml, пробовал и имя_проги.exe.manifest.xml. Добавил в ресурс - type:24, id:1, сохранил, откомпилировал. Ничего?!!
На счёт радиокнопки - на фрейм поместить PictureBox, а сверху его кнопку и всё нормально!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2003 (Ср) 5:30

Странно!
Вот, например, прога ApiViewer 2003. Если оную позырить через pebrowse, то узрим ресурс категории "24", где под ID 1 находится следующее:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" processorArchitecture="*" version="2.0.0.2"
name="ApiViewer 2002"/>
<description>ApiViewer 2002</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
language="*"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
/>
</dependentAssembly>
</dependency>
</assembly>


Прекрасно эта прога под XP косит...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 5:37

А имя файла любое?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2003 (Ср) 6:11

Если в ресурсе, то да. Оно там вообще не хранится.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 6:15

А у кого-нибудь-то получилось???

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 6:29

На другой проге попробовал - ничего тоже не получилось!!!

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 6:35

Вот есть статейка на ту же тему, только не на Basic'е...


Далее, существуют два способа, как указать ОС, что данный файл манифеста должен быть отнесен именно к данной программе. Первый способ предельно прост. Вы копируете файл манифеста в тот же каталог, где расположена Ваша программа и переименовываете его так, чтобы его имя представляло собой следующее: "имя exe-файла программы.manifest". Т.е. если Ваша программа называется "FooBar.exe", то манифест необходимо будет переименовать в "FooBar.exe.manifest". Больше никаких изменений в программе не потребуется! Вы можете создавать все компоненты обычным образом (CreateWindow(Ex)), но они все будут выглядеть в соответствии с новым стилем Windows XP. Если же Вы запустите эту программу на более ранней версии Windows, то она просто не обратит внимание на файл манифеста и будет работать как раньше.

У приведенного способа есть очевидный недостаток - добавление лишнего файла к Вашей программе. Если кто-либо в процессе эксплуатации программы удалит этот файл (или даже просто переименует запускаемый файл программы, но не переименует файл манифеста), то программа снова начнет использовать старый стиль компонентов. Более того, ведь ни в одной программе, которая использует новый стиль OC Windows XP, нет никаких файлов манифестов! Значит это можно сделать и другим способом...

В связи с этим существует еще один способ, как связать файл манифеста с программой. Его необходимо поместить в ресурсы вашей программы. Для этого необходимо на начальном этапе сохранить манифест в какой-либо файл. Пусть он будет называться "manifest.xml". Теперь в скрипт ресурсов Вашей программы (это файл с расширением RC) необходимо добавить следующую строчку:

1 24 DISCARDABLE "manifest.xml"
Где 1 - это идентификатор ресурса (манифест обязательно должен быть под идентификатором 1) и 24 - это тип ресурса, а заканчивается строка именем файла, в котором находится информация, помещаемая в ресурсы - в данном случае это файл "manifest.xml".

В данный момент времени в файле winuser.h от VC 6 не описан тип ресурса 24 - там описание заканчивается типом 23, который называется RT_HTML, но если посмотреть в других местах, то можно найти, что 24 - это RT_MANIFEST, а 1 (идентификатор ресурса) определен как CREATEPROCESS_MANIFEST_RESOURCE_ID. Поэтому, если Вы пишите на VC++, то можете добавить в файл winuser.h после строки

#define RT_HTML MAKEINTRESOURCE(23)
следующий текст:

#define RT_MANIFEST MAKEINTRESOURCE(24)
#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1 /*inclusive*/)
#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16 /*inclusive*/)
Но, в принципе, вполне можно запомнить, что для того, чтобы добавить в Вашу программу манифест просто достаточно в имеющийся (или специально для этого созданный и подключенный к проекту) файл .rc добавить строку

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2003 (Ср) 7:08

Ну и как, получается, через ресурскомпайлер?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 13.08.2003 (Ср) 8:18

Если про VC++, то я понятия не имею как это делается, а в resourse editor VB ничего не выходит!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.08.2003 (Ср) 8:25

В стандартной поставке VB идёт ресусрс компайлер, называеся rc.exe. Попробуй сделать на нём то, что сам описал - то есть создай текстовый файл, в который напиши единственную строку 1 24 DISCARDABLE "путь к манифесту". После этого скорми этот файл ресурскомпайлеру: rc.exe file.txt. Получишь файл ресурса. Подключи его к проекту и посмотри, что будет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 14.08.2003 (Чт) 5:17

ОК, всё получилось! Спасибо за помощь!
Всем кому может понадобится - весь процесс подробнее.
1. Создаём в блокноте файл manifest.xml (название не имеет значения). В него помещаем содержимое отдельного файла манифеста (см. выше).
2. Создаём в блокноте скрипт - файл, например manifest.txt, в котором пишем: 1 24 DISCARDABLE "manifest.xml".
3. Теперь запускаем из командной строки прогу для компиляции ресурса: rc.exe manifest.txt. Всё - файл ресурса готов.
4. В VB в меню Project...add File добавлем этот файл.
5. После компиляции программа выглядит в стиле ХР (если на ней запускается). Теперь имя ехе'шника можно менять хоть на "ъъъ", а файл манифеста больше не нужен!!!


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

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

Сейчас этот форум просматривают: Google-бот и гости: 41

    TopList