Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

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;
var
S: TFileStream;
// можно TMemoryStream
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
4-36454
stel
2002-10-21 07:53
2002.12.12
Как переключить раскладку клавиатуры?


1-36124
Vick
2002-12-03 13:43
2002.12.12
Присвоение компоненту Eventа в RunTime-режиме


1-36191
DNT
2002-11-30 14:14
2002.12.12
Помогите начинающему


6-36315
BarSuk2002
2002-10-18 10:11
2002.12.12
Как подстраховаться и закрыть возможные атаки по порту 23?


3-36043
Rustik
2002-11-25 16:06
2002.12.12
Выдает сообщение Error creating cursor handle при пересчете табли