Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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;
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-36224
Tankist
2002-12-01 21:19
2002.12.12
Удаление элемента массива


1-36266
kex86
2002-12-02 14:34
2002.12.12
OutLook


1-36155
Itap
2002-12-02 20:24
2002.12.12
Копирование файла


14-36351
blackman
2002-11-20 10:08
2002.12.12
С понедельника хочу пятницу


1-36167
dumb
2002-12-04 01:09
2002.12.12
C++ 2 Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский