On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 2763
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 00:04. Заголовок: Full screen mode


Windows XP и ниже поддерживает такой режим.
Начиная с VISTA такого режима нет для консольных приложений.

Как выставить в приложении режим развернуть окно на весь экран
в зависимости от версии OS Windows ?

Что то типа такого нужно
 
if isfullscreemode()
// все как обычно как в Clipper
else
// развернем окошко поширше и на весь экран
endif




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 , стр: 1 2 All [только новые]


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




Пост N: 2742
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.13 02:39. Заголовок: Dima пишет: Как выс..


Dima пишет:

 цитата:
Как выставить в приложении режим развернуть окно на весь экран
в зависимости от версии OS Windows



IF OS_ISWINVISTA_OR_LATER()
// развернем окошко поширше и на весь экран
ELSE
// все остальное....
END

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

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




Пост N: 2765
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.03.13 10:22. Заголовок: Andrey пишет: Какой..


Andrey пишет:

 цитата:
Какой терминал и Харбор используешь ?


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

Andrey пишет:

 цитата:
то надо GTVWG -терминал использовать


Там ясно как сделать.

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




Пост N: 2745
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.13 12:41. Заголовок: Dima пишет: А как э..


Dima пишет:

 цитата:
А как это программно задать ?


Не знаю...
Я из-за этого ушел на GTVWG -терминал.

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




Пост N: 2860
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.13 13:10. Заголовок: Andrey пишет: Не зн..


Andrey пишет:

 цитата:
Не знаю...


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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2785
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.03.13 14:55. Заголовок: Dima пишет: Вопрос ..


Dima пишет:

 цитата:
Вопрос кто возьмется перевести это под Harbour



Пишут, что SetConsoleFont - это недокументированная функция. Т.е., она будет работать не на всех ОС, и не для всех размеров шрифта.
Перевести то под харбор ее несложно. Я перевел (см.ниже). Но она у меня не работает (xp sp3). Почему - не знаю.

#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


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




Пост N: 2861
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.13 15:05. Заголовок: Pasha а параметры к..


Pasha
а параметры какие ?

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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2786
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.03.13 15:11. Заголовок: Dima пишет: а парам..


Dima пишет:

 цитата:
а параметры какие ?



Размер шрифта

win_SetConsoleFont( <nFontSize> )

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




Пост N: 2862
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.13 15:15. Заголовок: А сам шрифт можно ук..


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


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2787
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.03.13 15:27. Заголовок: В этой функции - нет..


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

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




Пост N: 2863
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.13 15:32. Заголовок: Pasha Спасибо..


Pasha
Спасибо

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




Пост N: 2867
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.03.13 19:14. Заголовок: Pasha пишет: Но она..


Pasha пишет:

 цитата:
Но она у меня не работает (xp sp3)


Поигрался , работает.
WIN_SETCONSOLEFONT(16) установит 24 размер
WIN_SETCONSOLEFONT(17) установит 24 размер BOLD
WIN_SETCONSOLEFONT(18) установит 28 размер

С параметром меньше 11 ставятся точечные шрифты

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





Пост N: 289
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 24.03.13 08:12. Заголовок: Dima пишет: В этой ..


Pasha пишет:

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


Почему: Courier New & Terminal так же ставятся

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2789
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.03.13 09:34. Заголовок: AndreyZh пишет: Поч..


AndreyZh пишет:

 цитата:
Почему: Courier New & Terminal так же ставятся



Значит, на разных версиях windows по разному. У меня вот есть только Lucida Console

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




Пост N: 2868
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 10:21. Заголовок: Pasha А как получит..


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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2790
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.03.13 10:32. Заголовок: Так у GetConsoleWind..


Так у GetConsoleWindow нет параметров. Значит, надо так:

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl( GetConsoleWindow( ) ) ;
}

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




Пост N: 2869
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 10:35. Заголовок: хммм Warning W8065 t..


хммм
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 ?

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




Пост N: 2870
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 11:40. Заголовок: Dima пишет: а в BCC..


Dima пишет:

 цитата:
а в BCC 582 есть


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

PS
Windows XP SP3

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2791
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.03.13 12:08. Заголовок: Пишут, что GetConsol..


Пишут, что 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

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




Пост N: 2871
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 12:13. Заголовок: Pasha Понял. Разобр..


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

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




Пост N: 2872
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 13:54. Заголовок: Пересобрал Harbour п..


Пересобрал 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 , похоже у меня эта ветка и не сработала

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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

Функция вроде бы работает, что-то возвращает.

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




Пост 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'

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




Пост N: 2874
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 15:07. Заголовок: ага вроде так надо ..


ага вроде так надо

HB_FUNC( GETCONSOLEWINDOW )
{
hb_retnl( (LONG)GetConsoleWindow( ) ) ;
}


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




Пост N: 2875
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 15:18. Заголовок: Все как бы нормально..


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

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


Пост 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


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


Пост N: 1139
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.03.13 16:20. Заголовок: Dima пишет: Все как..


Dima пишет:

 цитата:
Все как бы нормально , но перестала нормально работать WIN_SETCONSOLEFONT()



А можно все в студию, вместе с обьяснительной
Самодостаточный пример

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




Пост N: 2876
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 16:21. Заголовок: Петр пишет: set PAT..


Петр пишет:

 цитата:
set PATH=d:\mingw\bin


я тоже так , но думалось что есть опция для hbmk2 , но пока ее нет .

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




Пост 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





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




Пост N: 2879
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 18:10. Заголовок: Pasha пишет: У меня..


Pasha пишет:

 цитата:
У меня тоже. Харбор получается не определят этот макрос


Мне вот стало интересно если харбор не определяет такие макросы а они натыканы
по всюду , тогда встает под сомнение и сборка харбор под MINGW или я не прав !?
Когда собирался харбор под MinGW частенько возникали разного рода ворнинги ,
и меня это малехо напрягает

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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( ) );
}


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




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2794
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.03.13 19:05. Заголовок: У меня с mingw работ..


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

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




Пост N: 2882
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 19:06. Заголовок: Pasha пишет: У меня..


Pasha пишет:

 цитата:
У меня с mingw работает


про MINGW и пишу , помучаю еще.........

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




Пост N: 2883
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 19:33. Заголовок: Dima пишет: помучаю..


Dima пишет:

 цитата:
помучаю еще.........


Не фига ;)
Только вот с такой вставкой и работает

WINBASEAPI
HWND
APIENTRY
GetConsoleWindow(
VOID
);

зы
Mingw 4.7.2

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




Пост 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



Где я ошибаюсь ?



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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"

а затем включать функции.


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




Пост N: 2885
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.13 23:58. Заголовок: Pasha Понял. Спасиб..


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 29
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет