Автор | Сообщение |
|
| |
Пост N: 2763
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.03.13 00:04. Заголовок: Full screen mode
Windows XP и ниже поддерживает такой режим. Начиная с VISTA такого режима нет для консольных приложений. Как выставить в приложении режим развернуть окно на весь экран в зависимости от версии OS Windows ? Что то типа такого нужно if isfullscreemode() // все как обычно как в Clipper else // развернем окошко поширше и на весь экран endif
|
|
|
Ответов - 37
, стр:
1
2
All
[только новые]
|
|
|
| Администратор
|
Пост N: 2792
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.03.13 14:53. Заголовок: Dima пишет: Пересоб..
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 Функция вроде бы работает, что-то возвращает.
|
|
|
|
| |
Пост N: 2873
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 15:02. Заголовок: Pasha Да работает ;..
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'
|
|
|
|
| |
Пост N: 2874
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 15:07. Заголовок: ага вроде так надо ..
ага вроде так надо HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (LONG)GetConsoleWindow( ) ) ; }
|
|
|
|
| |
Пост N: 2875
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 15:18. Заголовок: Все как бы нормально..
Все как бы нормально , но перестала нормально работать WIN_SETCONSOLEFONT() Когда сборка была под BCC все было норм а сейчас она не реагирует на параметр больше 10 И до кучи еще вопрос. Можно ли опционально указать hbmk2 в качестве параметра где искать компилятор , дабы не прописывать путь к нему через SET PATH ?
|
|
|
|
| постоянный участник
|
Пост N: 1138
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.03.13 16:11. Заголовок: Dima пишет: Можно л..
Dima пишет: цитата: | Можно ли опционально указать hbmk2 в качестве параметра где искать компилятор , дабы не прописывать путь к нему через SET PATH ? |
| Я обычно запускаю скриптом @rem hbmk.bat @ECHO OFF setlocal set PATH=d:\mingw\bin "%~dp0hbmk2.exe" %* endlocal Здесь скрипт находится в одной папке с hbmk2
|
|
|
|
| постоянный участник
|
Пост N: 1139
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.03.13 16:20. Заголовок: Dima пишет: Все как..
Dima пишет: цитата: | Все как бы нормально , но перестала нормально работать WIN_SETCONSOLEFONT() |
| А можно все в студию, вместе с обьяснительной Самодостаточный пример
|
|
|
|
| |
Пост N: 2876
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 16:21. Заголовок: Петр пишет: set PAT..
Петр пишет: я тоже так , но думалось что есть опция для hbmk2 , но пока ее нет .
|
|
|
|
| |
Пост N: 2877
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 16:49. Заголовок: Петр пишет: А можно..
Петр пишет: цитата: | А можно все в студию, вместе с обьяснительной Самодостаточный пример |
| ХЗ что было ;) Но сейчас работает одинаково и в BCC и MINGW 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
|
|
|
|
| |
Пост N: 2879
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 18:10. Заголовок: Pasha пишет: У меня..
Pasha пишет: цитата: | У меня тоже. Харбор получается не определят этот макрос |
| Мне вот стало интересно если харбор не определяет такие макросы а они натыканы по всюду , тогда встает под сомнение и сборка харбор под MINGW или я не прав !? Когда собирался харбор под MinGW частенько возникали разного рода ворнинги , и меня это малехо напрягает
|
|
|
|
| Администратор
|
Пост N: 2793
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.03.13 18:55. Заголовок: Dima пишет: Мне вот..
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( ) ); }
|
|
|
|
| |
Пост N: 2881
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 19:00. Заголовок: Pasha пишет: #defin..
Pasha пишет: цитата: | #define _WIN32_WINNT 0x0500 #include "hbapi.h" #include "windows.h" HB_FUNC( WIN_GETCONSOLEWINDOW ) { hb_retnl( ( HB_LONG ) GetConsoleWindow( ) ); } |
| Не прокатило и снова ругается что нет GetConsoleWindow
|
|
|
|
|
| Администратор
|
Пост N: 2794
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.03.13 19:05. Заголовок: У меня с mingw работ..
У меня с mingw работает. А с bcc55 работать не будет, поскольку прототипа этой функции нет совсем.
|
|
|
|
| |
Пост N: 2882
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 19:06. Заголовок: Pasha пишет: У меня..
Pasha пишет: про MINGW и пишу , помучаю еще.........
|
|
|
|
| |
Пост N: 2883
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 19:33. Заголовок: Dima пишет: помучаю..
Dima пишет: Не фига ;) Только вот с такой вставкой и работает WINBASEAPI HWND APIENTRY GetConsoleWindow( VOID ); зы Mingw 4.7.2
|
|
|
|
| |
Пост N: 2884
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 22:47. Заголовок: Жесть. Убил кучу вре..
Жесть. Убил кучу времени. Вот так не cобирается и не находит GetConsoleWindow 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 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 Где я ошибаюсь ?
|
|
|
|
| Администратор
|
Пост N: 2795
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.03.13 23:43. Заголовок: Dima пишет: Жесть. ..
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" а затем включать функции.
|
|
|
|
| |
Пост N: 2885
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 23:58. Заголовок: Pasha Понял. Спасиб..
Pasha Понял. Спасибо !
|
|
|
Ответов - 37
, стр:
1
2
All
[только новые]
|
|