Форум » [x]Harbour » ...еще раз о палитре » Ответить

...еще раз о палитре

Zakrzevky: Хочу изменить палитру например красного цвета на серобуромалиновую, используя RGB в Терминалке Harbour. В Clipper можно было через VGAPalette(). GtInfo( HB_GTI_PALETTE ) НИЧЕГО НЕ ВОЗВРАЩАЕТ и ничено не устанавливает. Библиотека gtwin.lib. При подключении gtwvt.lib приложение не запускается. Возможно что-то надо менять в компиляции или при линковке библиотек. Version: 2.0.0beta1 Date: 2009-06-18

Ответов - 14

Andrey: Zakrzevky пишет: При подключении gtwvt.lib приложение не запускается. Возможно что-то надо менять в компиляции или при линковке библиотек. Опять наступаем на те же ГРАБЛИ !!! Читайте форум. Для компиляции терминала: GTWIN ключ компиляции -ap и модуль BCC c0x32.obj GTWVT ключ компиляции -aa и модуль BCC c0w32.obj Используйте для изучения ключей сборки проектировщик (утилиту) HBMAKE.EXE из хХарбор. Там есть все терминалы.

PSP: 2008-06-13 10:56 UTC+0800 Pritpal Bedi (pritpal@vouchcac.com) + Added Palette implementation by color index. Hb_GtInfo( HB_GTI_PALETTE, nIndex[, nNewRGB ] ) -> nOldRGB 2008-06-13 09:12 UTC+0800 Pritpal Bedi (pritpal@vouchcac.com + Added functionality to change Palette. Hb_GtInfo( HB_GTI_PALETTE, aNewPalette ) -> aOldPalette <aNewPalette> must be of 16 elements containg RGB colors. Подробностей не знаю. :) Пробуйте...

Zakrzevky: Да бог с ним с gtwvt.lib. Перевел по легкому 4 проекта. Пользователь хочет привычный его глазу цвет(палитру). Да конечно HB_GtInfo( HB_GTI_PALETTE ) -> apalette, а не HB_GtInfo. Пусть будет gtwin.lib. пакет на трансляцию использую самопальный а не BATH, типа того как раньше .rmk @echo on echo eksped.exe rem Назначение путей set MG_BCC=c:\borland\bcc55 set MG_ROOT=c:\minigui set MG_HRB=%MG_ROOT%\harbour set MG_LIB=%MG_HRB%\lib set MV_LIB=%MG_LIB%;%MG_BCC%\lib set MV_INC=%MG_HRB%\include;%MG_BCC%\include set USE_DIR=D:\HARB_APP\CONSOLE\EKSPED rem список prg-файлов для получения с-кода set p1=eksped.prg ucalc.prg getsys.prg helpprg.prg veduch.prg infopost.prg infojur.prg infovyd.prg parol.prg set p2=xranost.prg netprix.prg ktost.prg reestr.prg lachoice.prg renum.prg prepnak1.prg prepnak3.prg inkey2.prg set p3=copyproc.prg indproc.prg utileksp.prg selekod.prg reorg.prg spispl.prg prepnak2.prg openini.prg set p4=spei.prg speh.prg spmest.prg spstro.prg spoper.prg sppers.prg vedkli.prg picdial.prg spotv.prg helpview.prg set p5=spkli.prg spkol.prg spprod.prg spptar.prg naklad1.prg naklad.prg brnakl.prg browdet.prg indfunc.prg rem список с-файлов для получения obj объектов set c1=eksped.c ucalc.c getsys.c helpprg.c veduch.c infopost.c infojur.c infovyd.c parol.c set c2=xranost.c netprix.c ktost.c reestr.c lachoice.c renum.c prepnak1.c prepnak3.c inkey2.c set c3=copyproc.c indproc.c utileksp.c selekod.c reorg.c spispl.c prepnak2.c openini.c set c4=spei.c speh.c spmest.c spstro.c spoper.c sppers.c vedkli.c picdial.c spotv.c helpview.c set c5=spkli.c spkol.c spprod.c spptar.c naklad1.c naklad.c brnakl.c browdet.c indfunc.c rem список подключаемых библиотек set l1=debug.lib vm.lib rtl.lib gtwin.lib lang.lib rdd.lib macro.lib pp.lib hbprinter.lib miniprint.lib set l2=dbfntx.lib dbffpt.lib hbsix.lib libct.lib common.lib codepage.lib hbw32.lib ace32.lib rddads.lib jutil.lib rem список подключаемых библиотек if exist _harbour.err del _harbour.err if exist _bcc32.err del _bcc32.err if exist _ilink32.err del _ilink32.err if exist eksped.exe del eksped.exe rem трансляция исходных текстов .prg в .c-код. %MG_HRB%\bin\harbour /n /b %p1% /i%MG_HRB%\include >> _harbour.err %MG_HRB%\bin\harbour /n /b %p2% /i%MG_HRB%\include >> _harbour.err %MG_HRB%\bin\harbour /n /b %p3% /i%MG_HRB%\include >> _harbour.err %MG_HRB%\bin\harbour /n /b %p4% /i%MG_HRB%\include >> _harbour.err %MG_HRB%\bin\harbour /n /b %p5% /i%MG_HRB%\include >> _harbour.err rem создание .rsp файла для траслятора Borand C if exist test.rsp del eksped.rsp echo %c1% >> temp.rsp echo %c2% >> temp.rsp echo %c3% >> temp.rsp echo %c4% >> temp.rsp echo %c5% >> temp.rsp echo %l1% >> temp.rsp echo %l2% >> temp.rsp rem компилляция и получение объектных модулей и .lnk файла для линковки %MG_BCC%\bin\bcc32 -O2 -I%MV_INC% -L%MV_LIB%;%USE_DIR%\obj @temp.rsp > NUL if exist turboc.$ln copy turboc.$ln eksped.lnk > NUL if exist turboc.$ln del turboc.$ln if exist temp.rsp del temp.rsp copy *.obj ..\obj > NUL rem сборка модулей и получение .exe %MG_BCC%\bin\ilink32 @eksped.lnk >> _ilink32.err if exist eksped.bak del eksped.bak if exist eksped.tds del eksped.tds if exist *.obj del *.obj if exist *.c del *.c if exist eksped.exe copy eksped.exe ..\exe if exist eksped.exe del eksped.exe :end ошибки ловлю в *.err файле все работает кроме палитры. Пример ниже. может кто такое делал!? * Начало программы #include "box.ch" #include "fileio.ch" #include "mgexit.ch" #include "config.ch" #include "inkey.ch" #include "color.ch" #include 'hbgtinfo.ch' #include 'inkey.ch' #include "wvtwin.ch" //???? #include "common.ch" #define RGB(r,g,b) ( r + ( g * 256 ) + ( b * 256 * 256 ) ) // тело головной процедуры Procedure Eksped(cOtlad) Static ScrMain := Nil Local aPalette := {} Local nRED // ссылки на кодовые страницы и язык REQUEST HB_LANG_RU866 REQUEST HB_LANG_RUWIN REQUEST HB_CODEPAGE_RU866 // руссификация hb_langSelect("RU866") hb_SetCodepage("RU866") // ДАЛЕЕ НЕ РАБОТАЕТ aPalette := Hb_GtInfo(HB_GTI_PALETTE) // вместо массива возвращает NIL nRed := Hb_GtInfo( HB_GTI_PALETTE, 5, RGB( 120, 200, 240 ) ) // NIL ........................... ............................ RETURN


PSP: Zakrzevky пишет: Да бог с ним с gtwvt.lib. ... Пусть будет gtwin.lib. Насколько я понял из исходников Harbour, в gtwin нет возможности менять палитру. Посмотрите файл src\rtl\gtwin\gtwin.c, функция hb_gt_win_info(). Она не обрабатывает HB_GTI_PALETTE. // ДАЛЕЕ НЕ РАБОТАЕТ aPalette := Hb_GtInfo(HB_GTI_PALETTE) // вместо массива возвращает NIL У меня работает (с gtwvt). Возвращает массив из 16 элементов.

Zakrzevky: Спасибо! Похоже на то. Я имею в виду src\rtl\gtwin\gtwin.c. Будем рыть дальше.

sergey5703: Не совсем понял, какой компилятор Вы используете - Harbour, xHarbour или Visual Harbour. Но раз Вы, как я понял - создаете КОНСОЛЬНОЕ Windows-приложение и Вас не устраивает что палитра немного "затемнена" то могу предложить "асинхронное" решение - написать крохотную Clipper-программу в которой делать все дела с функцией VGAPALETTE() и вызывать этот EXE-шник командой RUN из консольной Harbour программы в самом ее начале!

sergey5703: В общем я доэксперементировался с палитрой - ОНА НАВСЕГДА МЕНЯЕТСЯ. Моя операционная среда - Windows XP SP2 Pro (с некоторыми обновлениями от Microsoft) - консоль в Far Managere. То есть фишка в чем - откомпилировать программу colorpal.prg из комплекта утилит Clipper Tools и настроить нужное консольное окно с ее помощью. В реестре Windows появится: [HKEY_CURRENT_USER\Console\FAR manager] "ScreenColors"=dword:00000007 "PopupColors"=dword:000000f5 "ColorTable00"=dword:00000000 "ColorTable01"=dword:00800000 "ColorTable02"=dword:00008000 "ColorTable03"=dword:00808000 "ColorTable04"=dword:00000080 "ColorTable05"=dword:00800080 "ColorTable06"=dword:00008080 "ColorTable07"=dword:00c0c0c0 "ColorTable08"=dword:00808080 "ColorTable09"=dword:00ff0000 "ColorTable10"=dword:0000ff00 "ColorTable11"=dword:00ffff00 "ColorTable12"=dword:000000ff "ColorTable13"=dword:00ff00ff "ColorTable14"=dword:0000ffff "ColorTable15"=dword:00ffffff "InsertMode"=dword:00000001 "QuickEdit"=dword:00000000 "FullScreen"=dword:00000000 "ScreenBufferSize"=dword:00190050 "WindowSize"=dword:00190050 "FontSize"=dword:00140000 "FontFamily"=dword:00000036 "FontWeight"=dword:00000190 "FaceName"="Lucida Console" "CursorSize"=dword:00000019 "HistoryBufferSize"=dword:00000032 "NumberOfHistoryBuffers"=dword:00000004 "HistoryNoDup"=dword:00000000 "WindowPosition"=dword:00000000

Zakrzevky: sergey5703 ! Я почти было хотел также поступить как вы советовали с VGAPALETTE(). Но вроде как то все немного криво. Насчет ColorPal.prg тоже думал. Но это не DOS! И чем его компилировать и как настроить с ее помощью реестр, не очень понял. Да и дело в том, что заказчик запускает прогу щелчком по иконке на рабочем столе. Вообще работаю тоже в Windows XP SP2 Pro, компилирую HarBour (без x) и то же в Far-е. Все бы хорошо, но тут завелся с этой палитрой, почитал у Кресина и заменил в пакете gtwin на gtwvt. Затем попробовал пересобрать по всем рекомендациям, но exe - шник так и не запустился. Приложение только моргнуло в оконном режиме и погасло. Может вернусь к gtwin.lib и попробую поковыряться на С с исходником, ведь с gtwvt работает.

sergey5703: Как я понял, для КАЖДОГО консольного приложения (если у Вас консольное приложение, а судя по тому что Вы подключаете то GTWIN.LIB то другую терминальную библиотеку) - Windows создает ветвь в реестре, типа: [HKEY_CURRENT_USER\Console\FAR manager]. Для DOS приложений - то же самое. Вы берете и в Far-е компилируете и выполняете Clipper-программу которая настраивает нужным образом палитру - в Far-е Вас цвета устраивают? Если да, то идем дальше - запускаем REGEDIT.EXE и из ветки [HKEY_CURRENT_USER\Console\FAR manager] делаем экспорт в файл .REG в формате NT - получили текстовый файл в котором ВРУЧНУЮ при помощи того же Far-а изменяем [HKEY_CURRENT_USER\Console\FAR manager] на [HKEY_CURRENT_USER\Console\Моя программа], где "Моя программа" - это заголовок (Caption) окна Вашей программы. И делаем обратный импорт отредактированного .REG файла в реестр. Уф ... Мне кажется должно получиться, если Вы ничего не напутаете. Мне показалось намека про реестр будет достаточно (в предыдущем моем ответе).

Andrey: Zakrzevky пишет: почитал у Кресина и заменил в пакете gtwin на gtwvt. Затем попробовал пересобрать по всем рекомендациям, но exe - шник так и не запустился. Приложение только моргнуло в оконном режиме и погасло. Я с этим тоже долго бился... Пока не научился делать.... Проверяй ключи, если не помогает, то высылай на мыло, 30195@mail.ru посмотрю !

PSP: Zakrzevky пишет: почитал у Кресина и заменил в пакете gtwin на gtwvt. Затем попробовал пересобрать по всем рекомендациям, но exe - шник так и не запустился. Приложение только моргнуло в оконном режиме и погасло. Воспользуетесь утилитой hbmk2 вместо ваших батников. Вот пример скрипта: -std -gtWVT -mt #------ Harbour Flags # Debug Mode -prgflag=-b #------ EXE Name -oName.exe #------ Additional include and lib path -i(здесь путь к добавочным *.ch) -L(здесь путь к добавочным *.lib) #------ Additional library path -l(добавочная lib без расширения) -l(добавочная lib без расширения) -l(добавочная lib без расширения) ... #------ PRG Sources (здесь список PRG-модулей) Запуск на сборку: hbmk2 @имя_скрипта В скрипте две опции: -std -gtWVT решат Вашу проблему, имхо. Подробнее о ключах hbmk2: hbmk2 --help Удачи! P.S. Забыл указать, что расширение файла скрипта - .hbc

Pasha: Andrey пишет: Для компиляции терминала: GTWIN ключ компиляции -ap и модуль BCC c0x32.obj GTWVT ключ компиляции -aa и модуль BCC c0w32.obj Не для компиляции, а для линковки, т.е. опцию -aa надо указать линкеру ilink32

Zakrzevky: Спасибо за помощь! Про ключи компиляции я так и догадался, а вот со скриптом попробую собрать. P.S. Чем дальше в лес... КОРОЧЕ говоря с hbmk2 еще больше проблем. Его удалось найти только скачав новую декабрьскую версию hb20. Похоже он пытается пересобрать все мои ранние библиотеке и лезет в свой каталог С:\hb20\... а мои lib ранее были в с:\minigui\harbour\lib. Из всех признал только gtwvt hbsix rddads

PSP: Zakrzevky пишет: с hbmk2 еще больше проблем. Его удалось найти только скачав новую декабрьскую версию hb20. HBMK2 уже давно существует. Похоже он пытается пересобрать все мои ранние библиотеке и лезет в свой каталог С:\hb20\... а мои lib ранее были в с:\minigui\harbour\lib. Из всех признал только gtwvt hbsix rddads Вот ссылка на уже собраный Harbour: http://sourceforge.net/projects/harbour-project/files/ Найдите там раздел binaries-windows и скачайте либо архив 7z, либо инсталятор. В скрипте не нужно указывать стандартные библиотеки Harbour. HBMK2 сама найдет все, что нужно для сборки. Укажите только специфические *.ch и *.lib и всё.



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