Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Версия 2.20   Найти похожие ветки 

 
Vladimir Kladov   (2005-11-04 09:00) [0]

Новости от 4 ноября 2005 г.

Новости KOL и MCK (v2.20):
[+]KOL: добавлена функция DesktopPixelFormat.
[-]KOL: исправлен метод TBitmap.SetHandle (и asm- и pas-версии) для монохромных битмапов (могло приводить к ошибкам в Windows98 в последующих вызовах DrawTransparent и возможно, в других случаях). Спасибо Truf за the bug report.
[-]KOL: исправлена функция NewRichEdit (правильно работала только для первого вызова). Спасибо flea за bug report.
[-]KOL: поправлен метод TControl.Destroy (PAS-version) - приведен в соответствие с asm-версией (уничтожение CustomObj и CustomData смещено ниже по коду). По предложению homm.
Прочие новости:
[*]kol_err: обновлен модуль MMX.PAS в архиве kol_err.zip (изменена функция GetCPUType и теперь возвращает результат другого типа - множество способностей вместо единственного идентификатора способности на упорядоченной последовательности. Дополнительно, возвращаются теперь такие возможности AMD как MMX+, 3DNow! и 3DNow+. Код, использующий эту функцию, должен быть изменен, например, выражение GetCPUType >= cpuMMX должно быть заменено на cpuMMX in GetCPUType.

А тоя вчера посылал, посылал, а сервер не соединился. Если у кого AMD, проверьте, что 3DNow! определяется в MMX.GetCPUType, пожалуйста. У меня все 4 компа дома и все компы на работе - Intel.


 
SPeller ©   (2005-11-06 10:11) [1]

3DNow и 3DNow+ определяются нормально.


 
Vladimir Kladov   (2005-11-06 11:05) [2]

Сасибо, уже проверили. А никто не знает, какие команды относятся к MMX+ (если такие вообще есть)?


 
homm86   (2005-11-06 14:13) [3]


> [-]KOL: исправлен метод TBitmap.SetHandle (и asm- и pas-
> версии) для монохромных битмапов (могло приводить к ошибкам
> в Windows98 в последующих вызовах DrawTransparent и возможно,
>  в других случаях). Спасибо Truf за the bug report.
Может я сейчас глупостью занимаюсь, но причем здесь Truf?
IMHO Спасибо ECM, gent, homm за the bug report.


 
Vladimir Kladov   (2005-11-06 19:26) [4]

не надо жадничать :)
ладно, исправил - в новостях


 
Vladimir Kladov   (2005-11-06 19:26) [5]

А все-таки, владельцы AMD, кто-нибудь знает, что такое MMX+. Все перерыл, но но так и не нашел пока.


 
SPeller ©   (2005-11-06 21:19) [6]

Да, я тоже пока ничего не нашёл по этим командам.. )


 
gent   (2005-11-07 14:03) [7]

> [-]KOL: исправлен метод TBitmap.SetHandle ...

И все же TBitmap.DrawTransparent глючит под Win98 (начиная с KOL 2.04). Приходится выкручиваться через ImageList. Ниже - пример программы, которая показывает ошибку и способ ее обхода (Win98  + D5 + KOL2.21).

program Test;

uses Windows, KOL;

type
 PForm1 = ^TForm1;
 TForm1 = object(TObj)
   Form: PControl;
   procedure Paint(Sender: PControl; DC: HDC);
 end;

{$R "test.res"}

{$DEFINE use_BitMap}


var Form1: PForm1;
{$IFDEF use_BitMap}      bmp: PBitmap;
{$ELSE == use ImageList} il : PImageList; {$ENDIF}

procedure TForm1.Paint(Sender: PControl; DC: HDC);
 begin
{$IFDEF use_BitMap}      bmp.DrawTransparent(DC, 0, 0, clFuchsia);
{$ELSE == use ImageList} il.Draw(0, DC, 0, 0);                    {$ENDIF}
 end;

begin
 New(Form1); Form1.Form := NewForm(nil, ""); Form1.Form.OnPaint := Form1.Paint;
{$IFDEF use_BitMap}      bmp := NewBitmap(0, 0);  bmp.LoadFromResourceName(hInstance, "BMP");
{$ELSE == use ImageList} il := NewImageList(nil); il.LoadBitmap("BMP", clFuchsia);           {$ENDIF}
 Run(Form1.Form);
end.

Здесь в ресурсах содержится 16-цветный битмап BMP (фоновый цвет - clFuchsia).
Если закомментировать {$DEFINE use_BitMap}, то будет использоваться ImageList. Извращение, в каком-то смысле, но работает. Заодно и размер ЕХЕшника на 1.5Кб меньше. :-)


 
Vladimir Kladov   (2005-11-07 20:53) [8]

этот глюк ухудшился в 2.20. Здесь явно ос-зависимый кусок кода, и надо в условие добавлять проверку версии Windows. Но даже самые древние версии KOL что-то не очень хорошо делают DrawTransparent для 9х. Я взял две фигуры , красную и зеленую - на фоне фуксия (прозрачный). Так вот, красный - в порядке, а зеленый - тоже стал прозрачным.


 
gent   (2005-11-08 01:23) [9]

Года 3 назад обнаружил подобную ошибку в D7 VCL. Там, насколько помню, приходилось подправлять палитру битмапа - стандартная палитра работала всегда, а для остальных не то черный, не то белый, не то еще какие-то цвета должны были находиться на "своих" местах. А ImageList, кажется, затягивает картинки во внутреннее 24-битовое представление (могу ошибаться).
В KOL 2.21 игры с палитрой не проходят, но у меня всё работает, если заменить код TBitMap.SetHandle на аналог из версии 2.03 (честно говоря, так и не понял, зачем он был изменен).



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
15-1152879331
vidiv
2006-07-14 16:15
2006.08.13
Как Access реализует блокировки? Как реализовать самому?


15-1152850801
Александр Иванов
2006-07-14 08:20
2006.08.13
Namespace в XML


2-1153487021
b.o.n.d.007
2006-07-21 17:03
2006.08.13
Степень и корень


2-1153866220
impuls
2006-07-26 02:23
2006.08.13
Осциллограф


15-1153043236
Германн
2006-07-16 13:47
2006.08.13
Контроллеры СОМ портов