Форум » [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

Pasha: Dima пишет: Пересобрал Harbour под Mingw 4.7.2 Собирался он очень долго. Помнится, наш немецкий друг со своим знаменитым шефом жаловался на медленную сборку под bcc55. Это он сборки современными компиляторами еще не видел :-) По прежнему такой код не катит при сборке .. Вопрос откуда компилятор знает значение _WIN32_WINNT , похоже у меня эта ветка и не сработала У меня тоже. Харбор получается не определят этот макрос. Ну и ладно. Эту функцию можно определить и вручную: #include "hbapi.h" #include "windows.h" WINBASEAPI HWND APIENTRY GetConsoleWindow( VOID ); HB_FUNC( WIN_GETCONSOLEWINDOW ) { hb_retnl( ( HB_LONG ) GetConsoleWindow( ) ); } #pragma ENDDUMP Функция вроде бы работает, что-то возвращает.

Dima: Pasha Да работает ;) Вот только ворнинг при сборке sklad.prg: In function 'HB_FUN_GETCONSOLEWINDOW': sklad.prg:1227:1: warning: passing argument 1 of 'hb_retnl' makes integer from pointer without a cast [enabled by defaul t] In file included from sklad.prg:1112:0: c:/hb32mingw/include/hbapi.h:699:25: note: expected 'long int' but argument is of type 'HWND'

Dima: ага вроде так надо HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (LONG)GetConsoleWindow( ) ) ; }


Dima: Все как бы нормально , но перестала нормально работать WIN_SETCONSOLEFONT() Когда сборка была под BCC все было норм а сейчас она не реагирует на параметр больше 10 И до кучи еще вопрос. Можно ли опционально указать hbmk2 в качестве параметра где искать компилятор , дабы не прописывать путь к нему через SET PATH ?

Петр: Dima пишет: Можно ли опционально указать hbmk2 в качестве параметра где искать компилятор , дабы не прописывать путь к нему через SET PATH ? Я обычно запускаю скриптом @rem hbmk.bat @ECHO OFF setlocal set PATH=d:\mingw\bin "%~dp0hbmk2.exe" %* endlocal Здесь скрипт находится в одной папке с hbmk2

Петр: Dima пишет: Все как бы нормально , но перестала нормально работать WIN_SETCONSOLEFONT() А можно все в студию, вместе с обьяснительной Самодостаточный пример

Dima: Петр пишет: set PATH=d:\mingw\bin я тоже так , но думалось что есть опция для hbmk2 , но пока ее нет .

Dima: Петр пишет: А можно все в студию, вместе с обьяснительной Самодостаточный пример ХЗ что было ;) Но сейчас работает одинаково и в BCC и MINGW [pre2] proc main cls setmode(25,80) WIN_SETCONSOLEFONT(12) // фонт 24 Lucida console @ 10,10 say "TEST" color "gr+/r" WAIT "TEST 24 Lucida console" return #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 пишет: У меня тоже. Харбор получается не определят этот макрос Мне вот стало интересно если харбор не определяет такие макросы а они натыканы по всюду , тогда встает под сомнение и сборка харбор под MINGW или я не прав !? Когда собирался харбор под MinGW частенько возникали разного рода ворнинги , и меня это малехо напрягает

Pasha: Dima пишет: Мне вот стало интересно если харбор не определяет такие макросы а они натыканы по всюду , тогда встает под сомнение и сборка харбор под MINGW или я не прав !? Когда собирался харбор под MinGW частенько возникали разного рода ворнинги , и меня это малехо напрягает Я могу только предположить. Если в харборе будет определен макрос вида. #define _WIN32_WINNT 0x0500 и будут использованы функции, которые есть в версиях windows старше некоторой, то харбор будет непригоден для использования в младших версиях этой ОС. А харбор универсален, и его можно использовать для всех версий windows. Но можно определить подобный макрос в своих программах, и использовать такие функции. К примеру: #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" HB_FUNC( WIN_GETCONSOLEWINDOW ) { hb_retnl( ( HB_LONG ) GetConsoleWindow( ) ); }

Dima: Pasha пишет: #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" HB_FUNC( WIN_GETCONSOLEWINDOW ) { hb_retnl( ( HB_LONG ) GetConsoleWindow( ) ); } Не прокатило и снова ругается что нет GetConsoleWindow

Pasha: У меня с mingw работает. А с bcc55 работать не будет, поскольку прототипа этой функции нет совсем.

Dima: Pasha пишет: У меня с mingw работает про MINGW и пишу , помучаю еще.........

Dima: Dima пишет: помучаю еще......... Не фига ;) Только вот с такой вставкой и работает WINBASEAPI HWND APIENTRY GetConsoleWindow( VOID ); зы Mingw 4.7.2

Dima: Жесть. Убил кучу времени. Вот так не cобирается и не находит GetConsoleWindow [pre2] PROC Main cls ? GETCONSOLEWINDOW() wait return #pragma BEGINDUMP #include "hbapi.h" #include "windows.h" HB_FUNC( SETCONSOLETITLE ) { hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ; } HB_FUNC( FINDWINDOW ) { hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ; } #PRAGMA ENDDUMP #pragma BEGINDUMP #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (HB_LONG)GetConsoleWindow( ) ) ; } #PRAGMA ENDDUMP [/pre2] а вот так собирается и работает [pre2] PROC Main cls ? GETCONSOLEWINDOW() wait return #pragma BEGINDUMP #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" HB_FUNC( SETCONSOLETITLE ) { hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ; } HB_FUNC( FINDWINDOW ) { hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ; } HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (HB_LONG)GetConsoleWindow( ) ) ; } #PRAGMA ENDDUMP [/pre2] Где я ошибаюсь ?

Pasha: Dima пишет: Жесть. Убил кучу времени. Вот так не cобирается и не находит GetConsoleWindow Проблема в том, что в этом коде строка #include "windows.h" встречается 2 раза, причем первый раз макрос _WIN32_WINNT не задан. Но срабатывает только включение windows.h первый раз, без определения _WIN32_WINNT Второй оператор include игнорируется Поэтому правильно было бы включить все в один фрагмент BEGINDUMP - ENDDUMP, в начале которого указать #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" а затем включать функции.

Dima: Pasha Понял. Спасибо !



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