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




Пост 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 
ПрофильЦитата Ответить
Ответов - 201 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]


постоянный участник




Пост N: 7666
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.01.24 14:17. Заголовок: Хочу чтобы имя фонта..


Хочу чтобы имя фонта и САМ ВИД ФОНТА отображался в контекстном меню.
Имя фонта меняю, а сам размер фонта не получается.

Для контекстного меню знаю что есть такие функции изменения:
   // для меню 
_SetMenuItemCaption( "SetFont" , cForm , cItem )
// для иконок
_SetMenuItemIcon( "SetCopy" , cForm, if( lCopy, "iCopy32On", "iCopy32Off" ) )
// для bmp
_SetMenuItemBitmap( "SetFile" , cForm, if( lFile, "bRecOn32" , "bRecOff32" ) )

А как поменять сам фонт и его размер в меню ?

.... 
STATIC cStaticFont, hStaticFont

DEFINE FONT TestFnt FONTNAME "DejaVu Sans Mono" SIZE 12 BOLD

hStaticFont := GetFontHandle( "TestFnt" )
aFont := GetFontParam( hStaticFont )
cStaticFont := aFont[1] + " " + HB_NtoS(aFont[2])
cStaticFont += IIF(aFont[3]," Bold", "" )
cStaticFont += IIF(aFont[4]," Itl" , "" )

DEFINE MAIN MENU
....
SEPARATOR
MENUITEM 'Change font: ' + cStaticFont NAME SetFont FONT hStaticFont ACTION ChangeFont()
...
END MENU
.........
Static FUNCTION ChangeFont()
LOCAL aFont, aF, cItem, cForm := "wMain"

aF := GetFontParam( hStaticFont )
// вызвать стандартное меню шрифт для Windows
aFont := GetFont( aF[1] , aF[2], aF[3], aF[4] , {0,0,0} , .f. , .f. , 0 )
if ! empty ( aFont[1] )

RELEASE FONT TestFnt // удаляем фонт
// Name , Size , Bold , Italic
aFont := { aFont[1] , aFont[2], aFont[3], aFont[4] }

DEFINE FONT TestFnt FONTNAME aFont[1] SIZE aFont[2]
DO EVENTS

// запишем новые значения фонта
cStaticFont := aFont[1] + " " + HB_NtoS(aFont[2])
cStaticFont += IIF(aFont[3]," Bold", "" )
cStaticFont += IIF(aFont[4]," Itl" , "" )
hStaticFont := GetFontHandle( "TestFnt" )
// запишем в меню новые значения фонта
cItem := _GetMenuItemCaption( "SetFont" , cForm )
cItem := SUBSTR(cItem, 1, AT(":",cItem) + 1 )
cItem += oCargo:cFont2
_SetMenuItemCaption( "SetFont" , cForm , cItem )

EndIf

RETURN NIL


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




Пост N: 2251
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.01.24 15:38. Заголовок: Andrey пишет: как п..


Andrey пишет:

 цитата:
как поменять сам фонт и его размер в меню ?


Переписал эту функцию таким образом:
 
Static FUNCTION ChangeFont()
LOCAL aFont, aF, cItem, cForm := "wMain"

aF := GetFontParam( hStaticFont )
// вызвать стандартное меню шрифт для Windows
aFont := GetFont( aF[1] , aF[2], aF[3], aF[4] , {0,0,0} , .f. , .f. , 0 )
if ! empty ( aFont[1] )

RELEASE FONT TestFnt // удаляем фонт
// Name , Size , Bold , Italic
aFont := { aFont[1] , aFont[2], aFont[3], aFont[4] }

//DEFINE FONT TestFnt FONTNAME aFont[1] SIZE aFont[2]
_DefineFont ( 'TestFnt', aFont[1], aFont[2], aFont[3], aFont[4] )

DO EVENTS

// запишем новые значения фонта
cStaticFont := aFont[1] + " " + HB_NtoS(aFont[2])
cStaticFont += IIF(aFont[3]," Bold", "" )
cStaticFont += IIF(aFont[4]," Itl" , "" )
hStaticFont := GetFontHandle( "TestFnt" )
// запишем в меню новые значения фонта
cItem := _GetMenuItemCaption( "SetFont" , cForm )
cItem := SUBSTR(cItem, 1, AT(":",cItem) + 1 )
cItem += cStaticFont
_SetMenuItemCaption( "SetFont" , cForm , cItem )

_SetMenuItemFont( "SetFont" , cForm , hStaticFont )

EndIf

RETURN NIL

Результат см. на картинке ниже:


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




Пост N: 4502
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.01.24 17:10. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Переписал эту функцию таким образом


Еще небольшую правку в _o2log(...)
 
*----------------------------------------------------------------------------*
FUNCTION _o2Log( o, nLen, cMsg, lExt, cLog )
*----------------------------------------------------------------------------*
LOCAL a, b, c, i, j, k := pCount(), l := .F., xRet := .T.
LOCAL lLog := IsErrorLogActive()


IF Valtype(cLog) $ "LND"
l := .T.
cLog := hb_FNameDir( _SetGetLogFile() ) + "_" + hb_ntos( Seconds() )
_HMG_CreateErrorLog := .T.

ENDIF
...
IF l .and. hb_FileExists( cLog )
xRet := hb_memoread( cLog )
hb_FileDelete( cLog )
_HMG_CreateErrorLog := lLog

ENDIF

RETURN xRet


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




Пост N: 2252
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.01.24 18:05. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще небольшую правку в _o2log(...)


Принято с благодарностью

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




Пост N: 7667
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.01.24 20:21. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Переписал эту функцию таким образом:


Спасибо БОЛЬШОЕ !
А как быть с цветом ?
Т.е. меню "Change color"

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




Пост N: 2253
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.01.24 14:53. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как быть с цветом ?


Посмотри еще раз пример в папке \SAMPLES\Advanced\ComboColor, а именно функцию CreateColorBMP()

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




Пост N: 4503
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.01.24 18:33. Заголовок: gfilatov2002 Еще пр..


gfilatov2002
Еще правка в
 
*----------------------------------------------------------------------------*
FUNCTION _o2Log( o, nLen, cMsg, lExt, cLog )
*----------------------------------------------------------------------------*
LOCAL a, b, c, i, j, k := pCount(), l := .F., xRet := .T.
LOCAL lLog := IsErrorLogActive(), aTmp, xTmp, cTmp
...
IF HB_ISOBJECT( o )
...
FOR EACH a IN o:GetAll()
...
IF HB_ISOBJECT( a[2] )
...
ELSEIF HB_ISARRAY( a[2] ) .and. lExt
aTmp := {}
FOR EACH xTmp IN a[2]
IF HB_ISOBJECT(xTmp)
cTmp := "O:" + xTmp:ClassName
IF xTmp:ClassName $ "THMGDATA,TKEYDATA,TTHRDATA,TINIDATA"
cTmp += " "+"ARRAY[" + hb_ntos( xTmp:Len() ) + "]"
IF xTmp:ClassName == "TINIDATA"
cTmp += " "+xTmp:cIni
ENDIF
ELSEIF xTmp:ClassName == "TWNDDATA"
cTmp += " "+xTmp:Name+" "+xTmp:Type
ELSEIF xTmp:ClassName $ "TCNLDATA,TTSBDATA,TGETDATA,TSTBDATA"
cTmp += " "+xTmp:Window+" "+xTmp:Name+" "+xTmp:Type
ELSEIF xTmp:ClassName == "TSBROWSE"
cTmp += " "+xTmp:cControlName+" "+xTmp:cParentWnd+" "+xTmp:cAlias
ENDIF
AAdd( aTmp, cTmp )
ELSE
AAdd( aTmp, xTmp )
ENDIF
NEXT
_LogFile( {.F., cLog}, hb_valtoexp( aTmp ) )
//_LogFile( {.F., cLog}, hb_valtoexp( a[2] ) )

ELSE
...


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




Пост N: 2254
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.01.24 19:23. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще правка


Добавил, конечно.
Благодарю за помощь

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




Пост N: 7668
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.24 22:13. Заголовок: Григорий, а можно по..


Григорий, а можно побороть: несовместимость режима TRANSPARENT для LABEL на форме и переключения тем ?

gfilatov2002 пишет:

 цитата:
Посмотри еще раз пример в папке \SAMPLES\Advanced\ComboColor, а именно функцию CreateColorBMP()


А как сделать bmp 32x32 и поместить его в
       MENUITEM 'Change color: [[[[[[]]]]]' FONT hFont ACTION ( aZClr := ChangeColor(aZClr) )  



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




Пост N: 2255
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.01.24 12:51. Заголовок: Andrey пишет: можно..


Andrey пишет:

 цитата:
можно побороть: несовместимость режима TRANSPARENT для LABEL на форме и переключения тем ?


Уже поправил.

Andrey пишет:

 цитата:
как сделать bmp 32x32 и поместить его в


Примерно вот так:



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




Пост N: 4504
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.01.24 16:13. Заголовок: gfilatov2002 Еще не..


gfilatov2002
Еще небольшая правка _o2log()
 
...
IF HB_ISOBJECT( o )
...
ELSEIF HB_ISARRAY( o )
_LogFile( {.F., cLog}, o )

FOR EACH a IN o
i := hb_enumIndex( a )
j := TR0( i, nLen - 1 ) + "." + " " + '"' + Valtype( a ) + '"'
_LogFile( {.T., cLog}, j + " -> " )

IF HB_ISOBJECT( a )
_o2Log( a, nLen + 5, , lExt, cLog )

ELSEIF HB_ISARRAY( a )
_LogFile( {.T., cLog}, TR0( i, nLen - 1 ) + "." )
...


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




Пост N: 2256
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.01.24 16:54. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще небольшая правка _o2log()


OK

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




Пост N: 4505
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.01.24 17:37. Заголовок: gfilatov2002 Пропус..


gfilatov2002
Пропустил неточность, надо чуток добавить в код выше обвязку
 
FOR EACH a IN o
i := hb_enumIndex( a )
IF ! HB_ISARRAY( a )
j := TR0( i, nLen - 1 ) + "." + " " + '"' + Valtype( a ) + '"'
_LogFile( {.T., cLog}, j + " -> " )
ENDIF

IF HB_ISOBJECT( a )

Пример для проверки тут https://TransFiles.ru/jw39y
В demo4.ini можно задавать cMainMenuItems = MENU_1 or MENU_2 or MENU_3 и др. переменными, кроме cMainMenuFile (или сделать др. файл ini с секциями для items)

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




Пост N: 2257
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.01.24 17:49. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить в код выше


Принято

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




Пост N: 7669
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.24 22:34. Заголовок: А как можно получить..


А как можно получить хенлы иконок из i_controlmisc.ch ?
// Alert icons 
#define ICON_EXCLAMATION 1 // default value
#define ICON_QUESTION 2
#define ICON_INFORMATION 3
#define ICON_STOP 4

И можно ли этот хендл показать вместо файла/ресурса в меню
         MENUITEM '&About' .... ICON "i_About32" FONT "DlgFont"   

Или нужно этот хендл иконки записать в файл, и потом показывать ? Как это сделать ?
Не нашёл в примерах запись иконки по хендлу.

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




Пост N: 2258
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.02.24 16:15. Заголовок: Andrey пишет: Не на..


Andrey пишет:

 цитата:
Не нашёл в примерах запись иконки по хендлу.


Посмотри рабочий пример ниже
Скрытый текст


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




Пост N: 7670
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.24 23:26. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
C_SaveHIconToFile( cIconName, aIcons )


Не то ! Это я видел.
Нужна одна иконка, а не коллекция иконок, т.е.
   cIcoExtrn := '.\Res\IconVista3.ico'  // icon file of all sizes 
hIcon := LoadIconByName( cIcoExtrn, 64 , 64 )
// а как записать hIcon ?

Это нужно потом для показа иконок в
      AlertInfo( cMsg, "About", hIcon, nIcoSize, aBtnClr, .T. , bOnInit, .F. ) 
AlertStop( cMsg, "About", hIcon, nIcoSize, aBtnClr, .T. , bOnInit, .F. )
и т.д.

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




Пост N: 2259
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.02.24 10:57. Заголовок: Andrey пишет: а как..


Andrey пишет:

 цитата:
а как записать hIcon ?


hIcon в данном случае - это временный указатель на загруженную иконку.
Сохранить его для дальнейшего использования можно только в переменную (например, статическую).

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




Пост N: 7671
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.02.24 13:52. Заголовок: Понял. Спасибо ! :s..


Понял. Спасибо !
А как у других это делается в HMG или FiveWin ?
Оттуда код портировать нельзя ?

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




Пост N: 7672
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.02.24 02:48. Заголовок: Нашёл немного не то,..


Нашёл немного не то, но тоже интересно. Иконку можно записать как .png и .bmp
Тоже бы не помешало в МиниГуи иметь такое.
https://forums.fivetechsupport.com/viewtopic.php?f=3&t=35109

Пост N: 1186
Там в исходнике на С есть такое:
 	//	Write the iconheader first of all  
//
WriteIconHeader(hFile, nNumIcons);

И ещё нашёл на С++
HRESULT SaveIcon(HICON hIcon, const wchar_t* path) { 
// Create the IPicture intrface
PICTDESC desc = { sizeof(PICTDESC) };
....

https://stackoverflow.com/questions/2289894/how-can-i-save-hicon-to-an-ico-file

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 201 , стр: 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 час. Хитов сегодня: 68
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет