Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
ВнизPointer => HBITMAP Найти похожие ветки
← →
Yurko (2002-12-02 03:44) [0]Как имея указатель на bitmap (или cursor) получить его hbitmap (hcursor)?
← →
AK-74 (2002-12-02 04:34) [1]CreateBitmapIndirect ?
← →
MBo (2002-12-02 13:25) [2]var b:tbitmap;
b является укзателем на объект типа TBitmap.
b.handle - это как раз HBITMAP
← →
AK-74 (2002-12-02 14:41) [3]>MBo © (02.12.02 13:25)
Как это не покажется странным, но в последней строчке может быть ошибка. В том то и вопрос, что у TBitmap"a может не быть handle. А также всего остального (canvasa, maski и т.п.).
← →
MBo (2002-12-02 14:59) [4]>AK-74
Почему? или имеется в виду тип windows.tbitmap, а не graphics.tbitmap?
← →
AK-74 (2002-12-02 17:14) [5]Да, я подразумевал именно структуру BITMAP.
(Потому что с VCL TBitmap и так все ясно)
Но куда делся хозяин вопроса? Получил он HBITMAP?
← →
Yurko (2002-12-02 23:19) [6]Я здесь!
HBITMAP не получил.
Но меня скорее интересует HCURSOR (с bitmap через vcl разобратся можно).
Pointer на курсор получил из LockResource, а теперь нужен HCURSOR!!!
← →
AK-74 (2002-12-03 00:58) [7]Как-то не очень понятно. Может вот это поможет:
function LoadAniCursor(Instance: THandle; ResID: PChar): HCursor;
// можно TMemoryStream
var
S: TFileStream;
Path, FileName: array[0..MAX_PATH] of Char;
Rsrc: HRSRC;
Res: THandle;
Data: Pointer;
begin
Result := 0;
Rsrc := FindResource(Instance, ResID, RT_ANICURSOR);
if Rsrc <> 0 then begin
Win32Check(GetTempPath(MAX_PATH, Path) <> 0);
Win32Check(GetTempFileName(Path, "ANI", 0, FileName) <> 0);
try
Res := LoadResource(Instance, Rsrc);
try
Data := LockResource(Res);
if Data <> nil then
try
S := TFileStream.Create(StrPas(FileName), fmCreate);
try
S.WriteBuffer(Data^, SizeOfResource(Instance, Rsrc));
finally
S.Free;
end;
Result := LoadCursorFromFile(FileName);
finally
UnlockResource(Res);
end;
finally
FreeResource(Res);
end;
finally
Windows.DeleteFile(FileName);
end;
end;
end;
← →
Yurko (2002-12-03 01:07) [8]А без записи на диск можно?
← →
AK-74 (2002-12-03 01:22) [9]А че, успевает записать?
Там же написано: вместо filestream проставь memorystream
← →
Yurko (2002-12-03 02:36) [10]А как быть с (при memorystream):
> Result := LoadCursorFromFile(FileName);
← →
AK-74 (2002-12-03 04:02) [11]При использовании tmemorystream изменится не только эта строчка
← →
Yurko (2002-12-03 23:49) [12]Вот-вот, и я о том же.
Тогда как при использовании tmemorystream загрузить ani-курсор?
← →
AK-74 (2002-12-04 01:30) [13]А тебе изложенная выше большая функция подходит?
← →
Yurko (2002-12-04 02:13) [14]Да, потому что загружает курсор;
Нет, потому что пишет на диск.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c