Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Версия 2.20 [Delphi, KOL/MCK, Windows]


Vladimir Kladov ©   (2005-11-04 09:00:00) 

Новости от 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.


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

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


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

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


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

> [-]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Кб меньше. :-)


SPeller   (2005-11-06 21:19:00) [4]

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


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

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


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

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


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


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


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

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


SPeller   (2005-11-06 10:11:00) [9]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо