EXE файл и способ добавления картинок
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: EXE файл и способ добавления картинок
Добавить или удалить элементы в Ring Control программно несколько проблематично, однако заменить картинки на уровне ресурсов теоретически возможно (причём не только у RingControl, можно и иконки на кнопках подменять). Но это не то, с чем я бы пошёл в продакшен. Пример в LV2010, в 2016 тоже вроде работает.
- Вложения
-
- Replace Image RunTime TEST.zip
- (50.31 КБ) 156 скачиваний
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: EXE файл и способ добавления картинок
AndreyDmitriev, пример в LV2016
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: EXE файл и способ добавления картинок
Смотрите, добавил подписи. Как работает: навели мышкой на элемент из списка картинок, значение в текстовом поле изменилось. Передвинули на следующий элемент, присвоили новое имя. Имена берутся из строкового массива. Я бы еще повозился над световым выделением на наведенный элемент списка, но это попробуйте придумать самостоятельно. Если же захотите, чтоб надпись появлялась непосредственно под выбираемой картинкой, то используйте аналогичную математику, которая используется для отображения массива с картинками.JohnChaban писал(а):Человеку показал ему понравилось.
Единственное пожелание от него было чтобы под картинками были подписи на русском языке.
Но подписи не просто а и из строкого массива.
- Вложения
-
- Безымянный.png (5.07 КБ) 7186 просмотров
-
- PictureControl_Upgrade.zip
- (50.1 КБ) 142 скачивания
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: EXE файл и способ добавления картинок
Ой, это я случайно после проверки сохранил в 2016. Вот сохранил обратно в 2010:Vitekkz88 писал(а):AndreyDmitriev, пример в LV2016
- Вложения
-
- Replace Images RunTime TEST Folder 2010.zip
- (42 КБ) 121 скачивание
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
AndreyDmitriev, уж почти 8 лет скоро исполнится этому примеру. А полноценный редактор ресурсов так никто и не написал до сих пор. Resource Editor от flarn2006 - единственная попытка продвинуться в этом направлении.
- JohnChaban
- leader
- Сообщения: 669
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
Re: EXE файл и способ добавления картинок
Не удалось пока воспользоваться примером https://lavag.org/topic/1772-simulating ... mment-8158
C winapi не силен и пока не понятно что должно быть в результате выполнения данного vi
C winapi не силен и пока не понятно что должно быть в результате выполнения данного vi
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
Не совсем удачный , да ещё и с ошибкой - удаление потомка некорректно реализовано.JohnChaban писал(а):Не удалось пока воспользоваться примером https://lavag.org/topic/1772-simulating ... mment-8158
C winapi не силен и пока не понятно что должно быть в результате выполнения данного vi
Всё-таки не советовал бы использовать этот способ ввиду его трудоёмкости. Там помимо SetParent ещё ряд вещей нужно сделать. В частности, изменить стиль окна-потомка, установить его координаты относительно окна-родителя, перерисовать это окно. Может, ещё что. И после завершения основной программы выполнить все указанные действия в обратном порядке. До кучи не стоит искать окошко через FindWindow, т.к. может найти чужое окно и тогда получится ералаш. Следует запустить дочерний процесс и по нему получить HWND. В общем, занятие не для чайников.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: EXE файл и способ добавления картинок
Все достаточно просто.
После остановки VI окно контекстной справки останется встроенным и работающим. Поэтому закройте сначала окно контекстной справки, а затем можно закрывать VI.
После остановки VI окно контекстной справки останется встроенным и работающим. Поэтому закройте сначала окно контекстной справки, а затем можно закрывать VI.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
Не проще ли тогда исправить , чтобы он работал как положено?Blackman писал(а):Все достаточно просто.
После остановки VI окно контекстной справки останется встроенным и работающим. Поэтому закройте сначала окно контекстной справки, а затем можно закрывать VI.
Но, как я уже сказал, одной этой функции будет маловато. Сделайте пару экзешников и посмотрите, что получится.MSDN писал(а):hWndNewParent [in, optional]
Type: HWND
A handle to the new parent window. If this parameter is NULL, the desktop window becomes the new parent window. If this parameter is HWND_MESSAGE, the child window becomes a message-only window.
- JohnChaban
- leader
- Сообщения: 669
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
Re: EXE файл и способ добавления картинок
Еще вопрос если сделан vi дочерний в виде exe то его имя указывать в titlechildwindow без .exe?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
Указываете то, что написано в заголовке окна, когда вы запустили экзешник. Если там написано, например, Application, то указывайте строку Application.JohnChaban писал(а):Еще вопрос если сделан vi дочерний в виде exe то его имя указывать в titlechildwindow без .exe?
Если будет свободное время, выложу исправленный вариант с запуском дочернего процесса и встраиванием на панель основной программы.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: EXE файл и способ добавления картинок
MDI Toolkit for LabVIEW™: http://www.lvs-tools.co.uk/files/6814/3 ... asheet.pdf
VI Box XControls - SAPHIR: http://sine.ni.com/nips/cds/view/p/lang/ru/nid/210715
ALOHA Modular GUI: http://www.s5solutions.com/aloha---details.html
Здесь ссылки на примеры WinAPI, NET ... : https://decibel.ni.com/content/message/15852#15852
VI Box XControls - SAPHIR: http://sine.ni.com/nips/cds/view/p/lang/ru/nid/210715
ALOHA Modular GUI: http://www.s5solutions.com/aloha---details.html
Здесь ссылки на примеры WinAPI, NET ... : https://decibel.ni.com/content/message/15852#15852
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
Поигрался немного с этим делом. Как-то ненадёжно это работает, да и не совсем эстетично. Вот пример с двумя экзешниками: Какие нюансы обнаружились:dadreamer писал(а):Если будет свободное время, выложу исправленный вариант с запуском дочернего процесса и встраиванием на панель основной программы.
- Хэндл окна экзешника иногда меняется в процессе запуска. В результате встраивание окна-потомка в окно-родитель не срабатывает, т.к. процедура поиска окна выдаёт старый хэндл, который более недействителен. Единственное решение здесь - ставить задержку (не менее 500 мс), чтобы окно в течение этого времени успело "обрести свою форму". Честно говоря, не знаю, почему так происходит. Вероятно, lvrt использует собственный конструктор окон, в т.ч. свои процедуры оконных событий.
- При запуске Child-процесса его окно отображается на экране в течение некоторого количества времени (часто это заметно визуально). На такие состояния как SW_HIDE (0), SW_MINIMIZE (6), SW_SHOWMINIMIZED (2) окно не реагирует. Если выставить FP.State = Hidden, то потом это окно не восстановить, т.к. нет коммуникации между двумя экзешниками.
- TerminateProcess - не совсем хороший способ завершения работы Child-процесса. Но раз нет никаких механизмов связи между двумя exe, то способ единственный. Ну, или помещать в Child отдельную кнопку Stop, тогда можно использовать WaitForSingleObject (задел для этого есть в примере).
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: EXE файл и способ добавления картинок
Скорее всего это следствие того, что при запуске сначала рисуется окно процесса загрузки VIs из экзешника. Это окно отрисовывается, если на медленной машине запускается тяжелое приложение с большим количеством VI. Скорее всего это его хендл. И задержка тут не факт, что поможет...- Хэндл окна экзешника иногда меняется в процессе запуска.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: EXE файл и способ добавления картинок
Она помогает, но приходится наблюдать Child-окошко в течение полсекунды или больше. Я бы такое не стал у себя в программе использовать. Может, здесь можно как-то иначе извернуться, но мне в голову ничего не приходит. Если класс окна, заголовок и PID одинаковые, то непонятно, как различить окна.Borjomy_1 писал(а):И задержка тут не факт, что поможет...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение