Форум » [x]Harbour » Full screen mode » Ответить

Full screen mode

Dima: Windows XP и ниже поддерживает такой режим. Начиная с VISTA такого режима нет для консольных приложений. Как выставить в приложении режим развернуть окно на весь экран в зависимости от версии OS Windows ? Что то типа такого нужно [pre2] if isfullscreemode() // все как обычно как в Clipper else // развернем окошко поширше и на весь экран endif [/pre2]

Ответов - 37, стр: 1 2 All

Andrey: Dima пишет: Как выставить в приложении режим развернуть окно на весь экран в зависимости от версии OS Windows IF OS_ISWINVISTA_OR_LATER() // развернем окошко поширше и на весь экран ELSE // все остальное.... END Какой терминал и Харбор используешь ? Если хочешь: "// развернем окошко поширше и на весь экран " то надо GTVWG -терминал использовать. Для хХарбора выкладывал уже, для Харбора еще "допиливать" нужно, там пара функций не работает...

Dima: Andrey пишет: Какой терминал и Харбор используешь ? GTWIN Ведь я же могу ручками зайти в свойства окна и подобрать нужный шрифт для окна что бы оно было на весь экран или почти. А как это программно задать ? Andrey пишет: то надо GTVWG -терминал использовать Там ясно как сделать.

Andrey: Dima пишет: А как это программно задать ? Не знаю... Я из-за этого ушел на GTVWG -терминал.


Dima: Andrey пишет: Не знаю... Способ есть. Вопрос кто возьмется перевести это под Harbour Вот сырец http://forum.oszone.net/thread-129824-6.html

Pasha: Dima пишет: Вопрос кто возьмется перевести это под Harbour Пишут, что SetConsoleFont - это недокументированная функция. Т.е., она будет работать не на всех ОС, и не для всех размеров шрифта. Перевести то под харбор ее несложно. Я перевел (см.ниже). Но она у меня не работает (xp sp3). Почему - не знаю. [pre2]#pragma BEGINDUMP #include "hbapi.h" #include "windows.h" typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD); SETCONSOLEFONT SetConsoleFont; HB_FUNC( WIN_SETCONSOLEFONT ) { HMODULE hmod = GetModuleHandleA("KERNEL32.DLL"); SetConsoleFont = ( SETCONSOLEFONT ) GetProcAddress(hmod, "SetConsoleFont"); if ( SetConsoleFont ) SetConsoleFont( GetStdHandle(STD_OUTPUT_HANDLE), hb_parni( 1 ) ); } #pragma ENDDUMP [/pre2]

Dima: Pasha а параметры какие ? Похоже число (поигрался) и вплоть до 10 размер окна меняется. Но все равно что то не то.

Pasha: Dima пишет: а параметры какие ? Размер шрифта win_SetConsoleFont( <nFontSize> )

Dima: А сам шрифт можно указать ?

Pasha: В этой функции - нет. Да и для консоли windows доступен только шрифт Lucida Console, других вариантов нет.

Dima: Pasha Спасибо

Dima: Pasha пишет: Но она у меня не работает (xp sp3) Поигрался , работает. WIN_SETCONSOLEFONT(16) установит 24 размер WIN_SETCONSOLEFONT(17) установит 24 размер BOLD WIN_SETCONSOLEFONT(18) установит 28 размер С параметром меньше 11 ставятся точечные шрифты

AndreyZh: Pasha пишет: В этой функции - нет. Да и для консоли windows доступен только шрифт Lucida Console, других вариантов нет. Почему: Courier New & Terminal так же ставятся

Pasha: AndreyZh пишет: Почему: Courier New & Terminal так же ставятся Значит, на разных версиях windows по разному. У меня вот есть только Lucida Console

Dima: Pasha А как получить дескриптор текущего консольного окна ? Пробовал так но что то не получается #include "hbapi.h" #include "Windows.h" HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( GetConsoleWindow( hb_parc( 1 ) ) ) ; } PS Читал о ней тут http://www.vsokovikov.narod.ru/New_MSDN_API/Console/fn_getconsolewindow.htm

Pasha: Так у GetConsoleWindow нет параметров. Значит, надо так: HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( GetConsoleWindow( ) ) ; }

Dima: хммм Warning W8065 test.prg 1209: Call to function 'GetConsoleWindow' with no prototype in function HB_FUN_GETCONSOLEWINDOW ага... В Wincon.h BCC 55 нет такой функции а в BCC 582 есть И что же делать теперь если у меня BCC 55 ?

Dima: Dima пишет: а в BCC 582 есть Попробовал пересобрать HArbour 3.2 под BCC 582 и облом. Во время сборки вывалилась месага об отсутствии Unicows.dll , что ему надо ? ;) Под BCC 55 сборка проходила нормально. PS Windows XP SP3

Pasha: Пишут, что GetConsoleWindow есть в winapi начиная с win2k. Это значит, что программы, ее использующие, не будут работать под win98 Если такой вариант устраивает, то есть несколько вариантов решения проблемы: 1. Попробовать просто скопировать прототип этой функции из wincon.h от bcc582. Может быть такой фокус пройдет. 2. Выяснять, почему не получается сборка с 5.8.2. Должна получаться. unicows.lib в поставке харбора есть, и для bcc 5.5 он нужен точно так же, как и для bcc 5.8.2 3. Использовать не bcc 5.8.2, а mingw, что перспективнее 4. Использовать для загрузки GetConsoleWindow тот же прием, что и для недокументированной SetConsoleFont, т.е. загружать ее из kernel32.dll, тогда тоже можно оставить bcc55

Dima: Pasha Понял. Разобрался уже. Спасибо

Dima: Пересобрал Harbour под Mingw 4.7.2 Собирался он очень долго. По прежнему такой код не катит при сборке obj/sklad.o:sklad.c:(.text+0x574): undefined reference to `GetConsoleWindow' #PRAGMA BEGINDUMP #include "hbapi.h" #include "Windows.h" #include "Wincon.h" HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( GetConsoleWindow( ) ) ; } #PRAGMA ENDDUMP В wincon.h есть вот такой код #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI GetConsoleDisplayMode(LPDWORD); HWND WINAPI GetConsoleWindow(void); #endif Вопрос откуда компилятор знает значение _WIN32_WINNT , похоже у меня эта ветка и не сработала



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