Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизCreateIconIndirect - по разному работает в разных Win??? Найти похожие ветки
← →
Users (2003-09-17 08:37) [0]Делаю динамически иконку для помещения в Tray:
Var
IInfo : TIconInfo;
Img : hBitmap;
Msk : hBitmap;
Brush : HBrush;
BitCount : Integer;
...
begin
DC := CreateCompatibleDC(0);
BitCount := GetDeviceCaps(DC, BITSPIXEL);
Img := CreateBitmap(16, 16, 2, BitCount Div 2, Nil);
Msk := CreateBitmap(16, 16, 1, 1, Nil);
SelectObject(DC, Img);
Brush := CreateSolidBrush(ColorBack);
With Rect Do
Begin
Left := 0;
Right := 16;
Top := 0;
Bottom := 16;
End;
FillRect(DC, Rect, Brush);
DeleteObject(Brush);
...
Добавляю текст, и т.д.
..
MainIcon := CreateIconIndirect(IInfo);
DeleteObject(Img);
DeleteObject(Msk);
DeleteDC(DC);
В 2000 и XP работает нормально, в Win 98 вместо иконки получается Dump какого то участка памяти.
Скорее всего причина в создании Img (наверное не верно делаю). Может кто сталкивался...
← →
MBo (2003-09-17 08:46) [1]какова причина использования двух цветовых плоскостей в
Img := CreateBitmap(16, 16, 2, BitCount Div 2, Nil);?
Да и не лучше ли для ксорного образа использовать CreateCompatibleBitmap?
← →
Users (2003-09-17 11:26) [2]Да, моя ошибка.
Заменил на :
Img := CreateBitmap(16, 16, 1, BitCount, Nil);
Т.е. UINT cBitsPerPel должен совпадать с битность текущего видеорежима? На 2000 проверил - работает, проверю на 98.
Спасибо.
CreateCompatibleBitmap создаст bitmap в соответствии контекстом "рабочего стола" (явно не монохром), а мне же нужно ч/б образ. Или я не прав?
← →
MBo (2003-09-17 12:28) [3]прав.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.061 c