On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 3882
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.01.15 18:29. Заголовок: Чего мне не хватает в МиниГуи....


Всех с праздниками !!!
Предлагаю тем кто использует МиниГуи высказать свои предложения по улучшению данного продукта, да и в какую сторону двигаться дальше....

Вот то что мне не хватает (я имею в виду примеров):
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. Как вывести на форму (не на кнопку) иконку заданного размера ?

Вот пока часть чего хочется... Может на Рождество желания сбудутся ?

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 All [см. все]


moderator




Пост N: 2260
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.02.24 13:11. Заголовок: Andrey пишет: Иконк..


Andrey пишет:

 цитата:
Иконку можно записать как .png и .bmp


Уже есть такая возможность

extern HBITMAP Icon2Bmp( HICON hIcon ); 

HB_FUNC( BMPFROMICON )
{
HICON hIcon = ( HICON ) hb_parnl( 1 );

hb_retnl( ( LONG ) Icon2Bmp( hIcon ) );
}

Можно использовать так:

 цитата:
Win_1.Image_1.hBitmap := BmpFromIcon( hIcon1 )


Кстати, этот код взят из твоего примера

/*
* MINIGUI - Harbour Win32 GUI library Demo
*
* Copyright 2023 Verchenko Andrey <verchenkoag@gmail.com> Dmitrov, Moscow region
* Copyright 2023 Grigory Filatov <gfilatov@inbox.ru>
*
* Манипуляции с объектами на форме
* Manipulating objects on a form
*/

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7673
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.02.24 19:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Кстати, этот код взят из твоего примера


Так это только заготовка, недоделанная...
И всего ОДНА операция - иконка в Bmp без прозрачности.
А в png нет...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2261
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.02.24 20:23. Заголовок: Andrey пишет: А в p..


Andrey пишет:

 цитата:
А в png нет...


Есть такая функция
И снова она взята из твоего примера
 
// извлечь файл картинки из ресурсов программы
FUNCTION myICO2PNG(cRes)
LOCAl aImage, cFileLogo, aXY, cMsg, nResult, cFile
Default cRes := "LogoMG"

cFile := cRes + ".ico"
aImage := {} // нет картинки ! файл для экспорта !

cFileLogo := GetTempFolder() + "\" + cFile
If !hb_FileExists( cFileLogo )
nResult := RCDataToFile( cRes, cFileLogo )
If nResult > 0
Else
cMsg := "cRes = '" + cRes + "'" + CRLF
cMsg += "RCDataToFile() - Code: " + hb_NtoS( nResult ) + CRLF
cMsg += cFileLogo + CRLF
MsgStop( cMsg, "Checkout error" )
Endif
Endif
If hb_FileExists( cFileLogo )
cFile := hb_dirBase() + cRes + ".png"
HMG_SaveImage( cFileLogo, cFile, "PNG" ) // Save to PNG

FErase ( cFileLogo )

aXY := hb_GetImageSize( cFile )
cMsg := cFile + ": " + hb_NtoS( aXY[1] ) + " x " + hb_NtoS( aXY[2] ) + " Pixels"
//AlertInfo(cMsg)
aImage := { cFile, aXY[1], aXY[2] }
Endif

RETURN aImage


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7674
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.02.24 22:27. Заголовок: Тогда осталось запис..


Тогда осталось запись хендла в иконку и оформить все в одном примере.
Или лучше записать всё в хелпе.
Что-то в примерах уже путаешься, искать нужный вариант сложно.
И не понял как иконку с формы записать в png ?
И ещё вопрос по иконкам. Как можно положить маску цвета на иконку ?
Сейчас приходиться для кнопок вносить в ресурсы 2 кнопки: обычную и с наложенным цветом желтую иконку.
Для смены иконки при наведении на кнопки мышкой.
Если можно сделать как в редакторе иконок:


Тогда бы ресурсы проги стали бы занимать в 2 раза меньше места.
А у меня 20 мб картинок и иконок в ресурсах моей проги...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2262
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.02.24 12:05. Заголовок: Andrey пишет: Как м..


Andrey пишет:

 цитата:
Как можно положить маску цвета


Для этого надо использовать дополнительные библиотеки:

1) bostaurus, которая входит в состав Минигуи;

2) бесплатную мощную внешнюю DLL - freeimage (есть примеры использования в поставке Минигуи).

Andrey пишет:

 цитата:
Тогда бы ресурсы проги стали бы занимать


1) Обрати внимание на оптимизацию ресурсов по размеру и цветности;
2) можно с помощью дополнительной бесплатной библиотеки hbsvg создавать простые векторные рисунки.
Ниже см. пример картинки, созданной с помощью этой библиотеки:


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2263
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.02.24 15:22. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
можно с помощью дополнительной бесплатной библиотеки hbsvg создавать простые векторные рисунки.


Еще один пример использования этой библиотеки - вывод табличных данных из DBF файла на картинку



Полный код этой программы см. ниже:
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7675
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.02.24 03:30. Заголовок: Вот нашёл https://ww..


Вот нашёл
https://www.forums.fivetechsupport.com/viewtopic.php?f=3&t=35547&p=211638&hilit=ico+to+png&sid=f6a307bf435b0e6fa8ba4aa5a88388ac#p211638
 
FWH 18.03: FW_SaveImage()
Postby nageswaragunupudi » Tue Apr 24, 2018 1:26 pm
New functions in FWH 18.03

FW_SaveHBitmap( hBitmap, cBmpFile ) --> lSuccess // в Минигуи похоже HMG_SaveImage( Win_1.Image_1.hBitmap, cFile1, "PNG" )
FW_SaveHIContoIco( hIcon, cIconFile ) --> lSuccess // сделать для МиниГуи можно ?

The above two functions are self explanatory.

FW_SaveImage( [uSource], [cFile], [lJpgQuality] ) --> lSuccess

Народ, кто работает на Fivewin'е поделитесь исходниками функцией FW_SaveHIContoIco( hIcon, cIconFile )

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2264
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.02.24 12:57. Заголовок: Andrey пишет: FW_Sa..


Andrey пишет:

 цитата:
FW_SaveHIContoIco( hIcon, cIconFile ) --> lSuccess


Такая функция уже есть в Минигуи:
 
FUNCTION SaveHIconToIco( hIcon, cIconName )

IF ".ICO" $ Upper( cIconName )
ELSE
cIconName := Trim( cIconName ) + ".ICO"
ENDIF

RETURN C_SaveHIconToFile( cIconName, { hIcon } )

Она была использована в примере samples\Basic\Icons\demo2.prg

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7676
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.02.24 13:45. Заголовок: А я не нашёл... Спас..


А я не нашёл... Спасибо БОЛЬШОЕ !
Вот что значит хелпа нет по функциям...
Что искать и не знаешь...

Тогда в примере-3 нужно сделать как то наложение маски цвета и пример будет готов.
Как это можно сделать ?

P.S. Есть пример \MiniGUI\SAMPLES\Advanced\GrayBmp, там используется функция
GrayBmp( GetControlHandle( "Image_1", "Form_1" ), cImage, Form_1.Image_1.Width, Form_1.Image_1.Height )

Вот наподобие надо для иконок.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7677
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.24 19:06. Заголовок: А сменить Background..


А сменить BackgroundColor картинки уже выведенной на форму можно ?
Делаю сначала:
      @ y, x + n IMAGE &cN OF Win_1 PICTURE '' WIDTH aSz HEIGHT aSz ; 
;//TRANSPARENT BACKGROUNDCOLOR aBColor
а потом пытаюсь сделать:
Win_1.&(cN).BackgroundColor := aBColor
и фон НЕ МЕНЯЕТСЯ !!!

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2265
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.02.24 19:28. Заголовок: Andrey пишет: смени..


Andrey пишет:

 цитата:
сменить BackgroundColor картинки уже выведенной на форму


Посмотри, как это сделано в примере Basic\IMAGE_2 - параметры картинки изменяются динамически.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7678
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.02.24 10:18. Заголовок: Использую выборку ко..


Использую выборку коллекций иконок из dll и сохранение этой коллекции в файл:
      aIcons    := ExtractIconEx( cIconDll, nItem ) 
// icon with number XX to write along the path
lRet := C_SaveHIconToFile( cIconSave, aIcons )

В файл записываются только иконки 16x16 и 32x32.
А мне нужны все иконки и большие тоже.
Как это сделать ?
Можно модифицировать функцию ExtractIconEx() чтобы все иконки брались ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2267
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.02.24 15:59. Заголовок: Andrey пишет: мне н..


Andrey пишет:

 цитата:
мне нужны все иконки и большие тоже.
Как это сделать ?


Нужно вместо функции ExtractIconEx() использовать другую WINAPI функцию PrivateExtractIcons(), которая позволяет извлекать иконки больших размеров.
Пример использования:
 
cIcon := 'IconVista.ico'
hIcon1 := LoadIconByName( cIcon, 256, 256 )
hIcon2 := LoadIconByName( cIcon, 128, 128 )
hIcon3 := LoadIconByName( cIcon, 64, 64 )
cIcon := 'v:\rh.exe'
msgdebug(PRIVATEEXTRACTICONS(cIcon, -1)) // return 9
a:=PRIVATEEXTRACTICONS(cIcon, 0, 256, 256) // icon 256x256
if ishicon(a[1])
hIcon1:=a[1]
endif
hIcon2:=PRIVATEEXTRACTICONS(cIcon, 8, 128, 128)[1] // icon 128x128

Результат ее работы при извлечении иконок из внешнего приложения см. на картинке:


P.S. Другой пример извлекает большие иконки из DLL в папке minigui\samples\Basic\Icons .
   cIcon   := 'myicons.dll' 
msgdebug(PRIVATEEXTRACTICONS(cIcon, -1)) // return 1
a:=PRIVATEEXTRACTICONS(cIcon, 0, 256, 256)
IF ISHICON(a[1])
hIcon1:=a[1]
ENDIF
hIcon2:=PRIVATEEXTRACTICONS(cIcon, 0, 128, 128)[1]
hIcon3:=PRIVATEEXTRACTICONS(cIcon, 0, 64, 64)[1]



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7679
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.02.24 17:33. Заголовок: Спасибо БОЛЬШОЕ ! g..


Спасибо БОЛЬШОЕ !

gfilatov2002 пишет:

 цитата:
Другой пример извлекает большие иконки из DLL в папке minigui\samples\Basic\Icons .


Там в примере demo3.prg есть функция hb_BitOr( DST_ICON, DSS_MONO )
Я пропустил этот пример, только сейчас увидел.
А можно наподобие такой функции сделать наложение маски цвета ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7695
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.24 20:42. Заголовок: Можно ли на объекте ..


Можно ли на объекте ButtonEX отключить ВООБЩЕ окантовку кнопки ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2291
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.03.24 12:36. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно ли на объекте ButtonEX отключить ВООБЩЕ окантовку


Надеюсь, пример \SAMPLES\Advanced\ExpButton уже видел
Вроде, там нет никакой окантовки у кнопок...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7697
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.03.24 13:28. Заголовок: Да, помню этот приме..


Да, помню этот пример, красивые кнопки.

Мне нужно допустим форма SILVER и сделать кнопку без окантовки тоже SILVER с иконкой.
Т.е. чтобы не было видно что это кнопка.
А при смене фокуса, меняю иконку.
Как то можно окантовку отключить ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4535
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.03.24 15:17. Заголовок: gfilatov2002 пишет В..


gfilatov2002 пишет
 цитата:
Вроде, там нет никакой окантовки у кнопок...


Что бы шире использовать Cargo кнопки, исправил код примера с использованием oHmgData()
Тут пример https://TransFiles.ru/6i56x

Andrey пишет
 цитата:
Как то можно окантовку отключить ?


В примере ф-я
*-----------------------------------------------------------------------------*
FUNCTION OwnButtonPaint( pdis )
*-----------------------------------------------------------------------------*
заменяет родную из minigui.lib читай readme.txt, там режимы описаны
Надо подстраивать под себя массив App.Cargo:aButStyles и в Cargo кнопки варианты для painting и image, т.е.
 
ON INIT {|o| This.Cargo := oHmgData(), o := ThisWindow.Cargo, ;
This.Cargo:aButStyles := o:aButStyles, ;
This.Cargo:cButMisc := '3,'+o:cResPath+'open.bmp' }


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2292
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.03.24 16:05. Заголовок: SergKis пишет: испр..


SergKis пишет:

 цитата:
исправил код примера с использованием oHmgData()


Большое спасибо за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7698
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.03.24 16:09. Заголовок: Это большой пример. ..


Это большой пример.
Попроще может быть пример ?
Форма и одна кнопка без окантовки с иконкой ...

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 All [см. все]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет