![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 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+ определяются нормально.