![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Pointer => HBITMAP [D5, Win95/98, WinME, NT4, Win2k, WinXP]
Yurko © (2002-12-02 03:44:00)Как имея указатель на bitmap (или cursor) получить его hbitmap (hcursor)?
Yurko (2002-12-04 02:13:00) [1]Да, потому что загружает курсор;
Нет, потому что пишет на диск.
AK-74 (2002-12-04 01:30:00) [2]А тебе изложенная выше большая функция подходит?
Yurko (2002-12-03 23:49:00) [3]Вот-вот, и я о том же.
Тогда как при использовании tmemorystream загрузить ani-курсор?
AK-74 (2002-12-03 04:02:00) [4]При использовании tmemorystream изменится не только эта строчка
Yurko (2002-12-03 02:36:00) [5]А как быть с (при memorystream):
> Result := LoadCursorFromFile(FileName);
AK-74 (2002-12-03 01:22:00) [6]А че, успевает записать?
Там же написано: вместо filestream проставь memorystream
Yurko (2002-12-03 01:07:00) [7]А без записи на диск можно?
AK-74 (2002-12-03 00:58:00) [8]Как-то не очень понятно. Может вот это поможет:
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-02 23:19:00) [9]Я здесь!
HBITMAP не получил.
Но меня скорее интересует HCURSOR (с bitmap через vcl разобратся можно).
Pointer на курсор получил из LockResource, а теперь нужен HCURSOR!!!
AK-74 (2002-12-02 17:14:00) [10]Да, я подразумевал именно структуру BITMAP.
(Потому что с VCL TBitmap и так все ясно)
Но куда делся хозяин вопроса? Получил он HBITMAP?
MBo (2002-12-02 14:59:00) [11]>AK-74
Почему? или имеется в виду тип windows.tbitmap, а не graphics.tbitmap?
AK-74 (2002-12-02 14:41:00) [12]>MBo © (02.12.02 13:25)
Как это не покажется странным, но в последней строчке может быть ошибка. В том то и вопрос, что у TBitmap"a может не быть handle. А также всего остального (canvasa, maski и т.п.).
MBo (2002-12-02 13:25:00) [13]var b:tbitmap;
b является укзателем на объект типа TBitmap.
b.handle - это как раз HBITMAP
AK-74 (2002-12-02 04:34:00) [14]CreateBitmapIndirect ?