Форум » GUI » Чего мне не хватает в МиниГуи.... » Ответить

Чего мне не хватает в МиниГуи....

Andrey: Всех с праздниками !!! Предлагаю тем кто использует МиниГуи высказать свои предложения по улучшению данного продукта, да и в какую сторону двигаться дальше.... Вот то что мне не хватает (я имею в виду примеров): 1. Очень мало примеров для работы с DLL (хотя это и не относиться к МиниГуи, но как делать не знаю). 1.1 Как собирать свои ресурсы к программе в отдельную dll-ку. Как подключать её при запуске, показ картинок из dll (я может и догадываюсь, но пока не могу сделать этого) ? 1.2. Как сделать отдельный свой ехе-ник, а Харбор и Минигуи затолкать в отдельную dll-ку, ну и LetoDB в отдельную dll. Как подключать при запуске эти отдельные dll и пользоваться функциями из этих dll ? 1.3. Как использовать чужие dll (допустим на Дельфи) в своих программах на МиниГуи (хотя FastReport'ом пользуюсь, но он специально сделан под Харбор) ? Разные примеры из МиниГуи на эту тему смотрел, кое что понятно, кое что нет. 2. Полноценная работа с иконками 2.1. Сейчас приходиться каждый размер иконки (16х16, 32х32 и т.д.) хранить отдельно в ресурсном файле и выводить на кнопки по отдельности. Нужна функция вывода из ОДНОГО файла иконки (содержащий все размеры от 16х16 до 128х128) выбранного размера. 2.2. Как из shell32.dll (она содержит все размеры иконок) можно выбрать и показать иконку отличную от размера 32х32 ? 2.3. Как вывести на форму (не на кнопку) иконку заданного размера ? Вот пока часть чего хочется... Может на Рождество желания сбудутся ?

Ответов - 64, стр: 1 2 3 4 All

Vlad04: Мечты, мечты ..... Я хотел -бы чтобы работа в Ide МиниГуи была похожа на работу в дизайнере Делфи или V.Basic, чтобы поддерживались основные необходимые компоненты и их свойства( позиционирование, контейнера и т.д.). а программирование поддерживало все приемы ОПП, без псевдо GetProperty, SetProperty..

gfilatov2002: Vlad04 пишет: чтобы работа в Ide МиниГуи была похожа на работу в дизайнере Делфи или V.Basic Ide МиниГуи имеет открытые исходники - Вы можете добавлять недостающий функционал самостоятельно Vlad04 пишет: программирование поддерживало все приемы ОПП Существует незавершенный открытый проект от автора Minigui, датированный 2010 годом, под названием HMG OBJECTS, который поддерживает полноценное ОПП Пример использования: [pre2]/* HMG Nice OOP! Demo(Full OOP syntax) (c) 2010 Roberto Lopez <mail.box.hmg@gmail.com> - HMG OBJECTS is designed to give to the programmers a similar experience as one using Clipper's predefined classes - Windows and its controls are created at window activation unless 'Create()' method is invoked. - Create() method is available for windows and controls. - Control's 'Parent' property is optional. If not specified, the last window defined is its default value. - xBase and alternate syntax can be used. - Control's 'Name' property (optional): At control creation, an instance variable is dynamically added to its parent window object. The name of this instance variable, is the control's name and its content is the control object. So, you could access a particular control (ie) in the following way: oWindow:Frame_1:Caption := 'New Caption' MsgInfo ( oWindow:Frame_1:Caption ) Look at \samples\button for working samples. */ #include "..\..\include\objects.ch" Set Procedure To ..\..\source\objects Function Main Local oWindow , oButton1 With Object oWindow := Window():New() :Row := 10 :Col := 10 :Width := 400 :Height := 400 :Title := 'Nice OOP Demo!!!' :Type := WND_MAIN :OnInit := { || oWindow:Center() } With Object oButton1 := Button():New() :Row := 40 :Col := 40 :Caption := 'OOP Button!!!' :OnClick := { || Button1Click() } End With End With oWindow:Activate() Return Procedure Button1Click() Local oStandard With Object oStandard := Window():New() :Row := 10 :Col := 10 :Width := 600 :Height := 300 :Title := 'Nice OOP Standard Window!!!' :Type := WND_STANDARD :OnInit := { || ( oStandard:Center() ) } End With oStandard:Activate() Return [/pre2]

SergKis: Andrey пишет: Как собирать свои ресурсы к программе в отдельную dll-ку пример создания dll: http://tempfile.ru/file/3102753

SergKis: Vlad04 пишет:программирование поддерживало все приемы ОПП сам напиши классы, обвесив функции окон, контролов MiniGui - не так и сложно

Dima: Andrey пишет: 2.2. Как из shell32.dll (она содержит все размеры иконок) можно выбрать и показать иконку отличную от размера 32х32 ? Вероятно надо глянуть пример MiniGUI\SAMPLES\BASIC\ExtractIcon\demo2.prg + MiniGUI\SAMPLES\Advanced\IconView\IcoView.prg а в нем параметры передаваемые функции EXTRACTICONEX (EXTRACTICON) PS Если есть непонятки спросить у gfilatov

Dima: Dima пишет: EXTRACTICONEX возможно вместо нее нужно использовать SHGetFileInfo , так как у EXTRACTICONEX только 2 варианта или маленькая иконка или большая. PS Просто погуглил

Andrey: Dima пишет: возможно вместо нее нужно использовать SHGetFileInfo Вот я и об этом и пишу, что нет функций в МиниГуи для работы с иконками... Если была, то я бы закатал все ресурсы в отдельную DLL (уж больно большим мой ехе-ник стал) и выводил на кнопку или форму нужные мне/ВСЕМ иконки (заданного размера). Вот единственный пример с функцией SHGetFileInfo который помог мне сделать Григорий. А SergKis переделал под универсальную форму просмотра. Прикольный получился пример. Жалко, что нет его в библиотеке... Но эта функция используется для других целей. Вот пример IconAssociatedFile_4.7z - https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample

XVar: В принципе можно строить отличный интерфейс, но возможнось таскать панели и невозможность указать минимальный (максимальный) размер удручает.

Andrey: Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib, чтобы потом прилинковывать к своему проекту ?

SergKis: Andrey пишет:Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib, чтобы потом прилинковывать к своему проекту ? Ты уверен, что при каждой компиляции, надо собирать lib ? Проект еще не отлажен, lib для работы не годится. Когда довел до ума, тогда и собирай ((пополняй lib), т.е. запустил bat\cmd и собрал new версию lib : [pre2] SET HB_INS_BCC=<путь к BCC> SET HBMK2_OBJ=<путь к объектникам проекта, создаваемых hbmk2> SET MYLIB_OUT=<путь и имя своей библиотеки> if not exist %MYLIB_OUT% goto Crt :Upd for %%i in ( %HBMK2_OBJ%\*.obj ) Do %HB_INS_BCC%\bin\tlib.exe %MYLIB_OUT -+%%i > nul goto e :Crt for %%i in ( %HBMK2_OBJ%\*.obj ) Do %HB_INS_BCC%\bin\tlib.exe %MYLIB_OUT %%i > nul :e [/pre2]

Andrey: SergKis пишет: Ты уверен, что при каждой компиляции, надо собирать lib ? Проект еще не отлажен, lib для работы не годится. Да я понимаю, что не нужно при каждой компиляции собирать свою lib. Просто хочу собрать уже свои отлаженные модули в lib. Вот и вопрос возник: Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib ?

gfilatov2002: Andrey пишет: Как в Минигуи сделать МойПроект.hbp для сборки нескольких .prg в МояБиблиотека.lib ? Посмотри мой проект, которым я сейчас собираю библиотеку: [pre2] # # hmg.hbp # -hblib -inc -o../lib/minigui -I../include -w3 -es2 -ko -q0 -hbx=../include/hmg.hbx -cflag=-DWIN32_LEAN_AND_MEAN c_bitmap.c c_browse.c c_btntextbox.c c_button.c c_checkbox.c c_chklabel.c c_chklistbox.c c_combo.c c_controlmisc.c c_crypt.c c_cursor.c c_datepicker.c c_dialog.c c_dialogs.c c_editbox.c c_folder.c c_font.c c_frame.c c_getbox.c c_graph.c c_grid.c c_help.c c_hotkey.c c_hotkeybox.c c_image.c c_imagelist.c c_ini.c c_ipaddress.c c_label.c c_listbox.c c_media.c c_menu.c c_monthcal.c c_msgbox.c c_pager.c c_progressbar.c c_radio.c c_registry.c c_resource.c c_richeditbox.c c_scrsaver.c c_slider.c c_spinner.c c_status.c c_tab.c c_textbox.c c_timer.c c_toolbar.c c_tree.c c_winapimisc.c c_windows.c c_windowsMDI.c c_winprop.c c_winxp.c ErrorSys.prg h_activex.prg h_browse.prg h_btntextbox.prg h_button.prg h_checkbox.prg h_chklabel.prg h_chklistbox.prg h_combo.prg h_controlmisc.prg h_crypt.prg h_datepicker.prg h_dialog.prg h_dialogs.prg h_draw.prg h_edit.prg h_edit_ex.prg h_editbox.prg h_error.prg h_events.prg h_folder.prg h_font.prg h_frame.prg h_getbox.prg h_gradient.prg h_graph.prg h_grid.prg h_help.prg h_hotkey.prg h_hotkeybox.prg h_hyperlink.prg h_image.prg h_imagelist.prg h_ini.prg h_init.prg h_ipaddress.prg h_label.prg h_listbox.prg h_media.prg h_menu.prg h_monthcal.prg h_mru.prg h_msgbox.prg h_pager.prg h_progressbar.prg h_radio.prg h_registry.prg h_report.prg h_richeditbox.prg h_scrsaver.prg h_slider.prg h_socket.prg h_spinner.prg h_status.prg h_tab.prg h_textbox.prg h_timer.prg h_toolbar.prg h_tree.prg h_wbrush.prg h_winapimisc.prg h_windows.prg h_windowsMDI.prg h_winprop.prg [/pre2]

Andrey: gfilatov2002 пишет: Посмотри мой проект, которым я сейчас собираю библиотеку: Спасибо БОЛЬШОЕ ! И поясни пожалуйста вот про эти 2 флага: -hbx=../include/hmg.hbx -cflag=-DWIN32_LEAN_AND_MEAN

Andrey: Поиск в гугле по: hmg.hbx выдаёт: HBX- бризантные высоковзрывчатые вещества. HE- фугасный снаряд. ... головной частью. HMG- тяжелый(станковый крупнокалиберный) пулемет.

gfilatov2002: Andrey пишет: поясни пожалуйста вот про эти 2 флага: -hbx=../include/hmg.hbx -cflag=-DWIN32_LEAN_AND_MEAN Ключ -hbx указывает утилите hbmk2 путь к файлу .HBX, который нужен для декларации всех функций библиотеки как EXTERNAL. Примечание. Используется в заголовке minigui\include\mgextern.ch Ключ -cflag указывает Си-компилятору дополнительный пользовательский переключатель. В данном случае это позволяет генерировать .OBJ модули меньшего размера. Если в твоей библиотеке НЕТ сишных модулей, то он НЕ нужен

Andrey: Спасибо !

Vlad04: gfilatov2002 цитата: программирование поддерживало все приемы ОПП Существует незавершенный открытый проект от автора Minigui, датированный 2010 годом, под названием HMG OBJECTS, который поддерживает полноценное ОПП Это , наверно было очень давно. В версиях hmg.3.4.1 и предыдущих нет следов HMG OBJECTS. Или я плохо искал ?

Vlad04: SergKis цитата: программирование поддерживало все приемы ОПП сам напиши классы, обвесив функции окон, контролов MiniGui - не так и сложно А примерчик небольшой можно? Окно с Бровсом и кнопочками

Dima: Vlad04 Да вот оно вроде http://sourceforge.net/projects/oohg/

SergKis: Vlad04 лови test



полная версия страницы