Andrey пишет:
цитата: |
Не могу, т.к. я гружу шрифты в стиле а-ля Нортон с оконтовкой и др.графической красотой. это было еще до Win95 ! Я пытаюсь пересобрать старые проекты на Harbour'e, может там можно загрузить ? |
|
Andrey, у тебя наверное небольшой шок
, если ты собираешся доказать, что в WinXP
нельзя запустить DOS задачу в полноэкранном режиме.
1) Не путай людей. Используя Clipper 5.3b+CT+Blinker 6.0, в частности
функцию FONTLOAD() ты создаешь псевдографический интерфейс a-la NU for DOS.
2) Вот такая текстовая программа
PROC main
local frame := chr(219)+chr(219)+chr(219)+chr(217)+;
chr(200)+chr(205)+chr(204)+chr(185)+;
chr(32)
SET CURS OFF
SET SCORE OFF
CLEAR SCREEN
DispBox( 3, 3, 20, 20, frame, "w/b")
FONTLOAD("nu.fnt", 2)
FONTSELECT(2)
собранная с использованием этого rmake файла
p_cl5 = e:\clip53\bin\clipper
p_lin = e:\clip53\bin\blinker
.prg.obj:
$(p_cl5) $** /a /n /w
nu_font.obj : nu_font.prg
nufont.exe : $(S**)
$(p_lin) fi nu_font lib ct53 out nu_font
только, что отработала у меня на WinXP SP2
в полноэкранном режиме без сучка и задоринки.
Проверял специально. В оконном режиме тебе этого не сделает и сам NU.
Библиотека сt53 это стандартная сt реального режима для Сlipper 53. сtp53 у меня нет. Так что о защищенном режиме говорить не буду, но думаю, что и там проблем нет.
Я сам использую этот достаточно красивый интерфейс в своих Clipper программах, но использую
вместо
FONTLOAD("nu.fnt", 2)
FONTSELECT(2)
просто FONTLOAD("nu.fnt").
О nu.fnt - стандартный шрифт 8х16, длина файла 4096, создан Keyrus Font Editor Дмитрия Гуртяка.
3) Для Harbour реализации ct нет. Есть для xHarbour.
Там в source\ct\video.c определена функция SETFONT, но там еще почему-то повписывали
#ifdef __DJGPP__
4) Если соберешся сам написать что-то, то может тебе поможет это
CLIPPER fontLoad()
{
EXOREGS inreg, outreg;
FHANDLE hFile;
BYTEP fpBuff, realptr;
if (!(PCOUNT > 0 && ISCHAR(1)))
{
_retni(1);
return;
}
if (ExoIsExoSpace())
{
if ((fpBuff = _xalloclow( 4096)) == NULL)
{
_retni(-1);
return;
}
}
else
{
_retni(1000);
return;
}
hFile = _fsOpen( _parc(1), FO_READ | FO_EXCLUSIVE );
if (_fsError())
{
_retni(2);
_xfreelow(fpBuff);
return;
}
_fsRead( hFile, fpBuff, 4096);
if (_fsError())
{
_retni(3);
_xfreelow(fpBuff);
return;
}
_fsClose( hFile );
if ((realptr = ExoRealPtr(fpBuff)) == NULL)
{
_retni(-2);
_xfreelow(fpBuff);
return;
}
inreg.es = FP_SEG(realptr);
inreg.bp = FP_OFF(realptr);
inreg.ax = 0x1100;
inreg.cx = 256;
inreg.dx = 0;
inreg.bx = 0x1000;
ExoRMInterrupt(0x10, &inreg, &outreg);
_xfreelow(fpBuff);
_retni(0);
}
Поскольку я обычно использовал Exospace, который с CT, по моему, не дружит, то когда-то
написал эту функцию. В XP в полноэкранном режиме рабатает достаточно корректно.