Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
ВнизКартишки Найти похожие ветки
← →
Blackweber (2001-12-27 21:36) [0]Кто-нибудь знает как использовать виндовскую библиотеку cards.dll (стандартные карты для пасьянсов и Hearts). Я нашел как карты используются в Visual Basic. Вот функции:
Function cdtinit(dx as sysInt, dy as SysInt) As Boolean - инициализация карт;
Function cdtDraw(hdc As SysInt, x As SysInt, y As SysInt, ordCard As SysInt, ordDraw As SysInt, clr As Long) As Boolean - рисование карт;
Function cdtDrawExt(hdc As SysInt, x As SysInt, y As SysInt, dx As SysInt,dy As SysInt, ordCard As SysInt, ordDraw As SysInt, clr As Long) As Boolean - рисование карт с задаваемыми размерами;
Function cdtTerm() As Boolean - ну это понятно, освобождение русурсов;
Если кто что-нибудь понял привидите пример на дельфи, т.к. я ничего (пока) не понимаю как используются DLL. Или же киньте ссылочку на использование карт(с примерами).
P.S. Такой то темы уж точно не было на этом форуме!
Вельми понеже.
← →
Nikolay (2001-12-27 21:58) [1]а может не напрягаться
и скачать с торри компоненту?
или
что то типа:
var
d:thandle;
b:tbitmap;
begin
initialization
d:=loadlibraryex("cards.dll",0,load_library_as_datafile);
b:=tbitmap.create;
b.loadfromresourceid(d,64)//загрузили рубашку
finalization
b.free;
freelibrary(d);
end;
только учти этот пример для работы с библиотекой из nt, так как в 98 он 16-ая
← →
skaminski (2001-12-28 01:08) [2](**************
Привожу свой юнит (когда-то тоже хотел карточную игру написать, а потом забросил:).
Юнит рабочий. Пользовать так. Есть тип TCard, описывающий Suit - масть и Value - значение карты. Для всего есть констаны,
напр. Suit = SuSpades, Value=Ace - это туз пик. Отдельный разговор это константа EmptyCard - это картинка
рубашки (я забил только один рисунок, сорри).
И есть процедура, которая грузит в ТБитмэп нужную картинку для заданной карты. Все очень просто.
Но есть одно НО! Cards.dll - это 16-битная библиотека, поэтому, я, чтобы не мучаться с вызовами 16-битных ресурсов
(тогда я не знал, что это возможно в принципе) повыдергивал картинки из Cards.dll и записал его в RES-файл.
Размер примерно 140 КБайт. Если идея подходит в принципе, то напише мне, и я сброшу по e-mail.
Мой адрес skaminski@yandex.ru
**************)
/// А вот и юнит
unit Cards;
interface
Uses Windows, SysUtils;
Type
TSuit = Integer;
TValue = Integer;
TCard = packed record
Value: TValue;
Suit: TSuit;
end;
Const
suClubs: TSuit = 0;
suDiamonds: TSuit = 13;
suHearts: TSuit = 26;
suSpades: TSuit = 39;
vaAce: TValue = 1;
va2: TValue = 2;
va3: TValue = 3;
va4: TValue = 4;
va5: TValue = 5;
va6: TValue = 6;
va7: TValue = 7;
va8: TValue = 8;
va9: TValue = 9;
va10: TValue = 10;
vaJack: TValue = 11;
vaQueen: TValue = 12;
vaKing: TValue = 13;
vaBack: TValue = 53;
EmptyCard : TCard = (Value : -1; Suit: -1);
Function GetCardId (Card: TCard): Integer;
procedure LoadCardBitmap (Card: TCard; Bitmap: Graphics.TBitmap);
implementation
uses Dialogs;
{$R CARDS.RES} // А вот тут ошибочка, ресурса еще у тебя нет
Function GetCardId (Card: TCard): Integer;
begin
if Card.Value = vaBack then
Result := Card.Value
else
Result := Card.Value + Card.Suit;
end;
procedure LoadCardBitmap (Card: TCard; Bitmap: Graphics.TBitmap);
var id: integer;
begin
id := GetCardId(Card);
Bitmap.LoadFromResourceID (hInstance, id)
end;
end.
← →
Blackweber (2001-12-28 01:16) [3]Компонент это конечно хорошо, но хотелось бы самому знать об использовании карт. Может есть какие апишные функции для этих целей.Я думаю это не стандартные бэйсиковские функции, хотя я ничего и не понимаю в нем.
А вообще имея библиотеку можно как-нибудь узнать какие процедуры и функции в ней зашиты без декомпиляции?
← →
Voland (2001-12-28 01:40) [4]Держи:
procedure TForm1.FormCreate(Sender: TObject);
var i: byte;
Bitmap: TBitmap;
hinstDLL: THandle;
begin
hinstDLL := LoadLibrary("Cards.dll");
bitmap:=tbitmap.create;
Bitmap.Handle := LoadBitmap(HInstDLL, PChar(54));
image1.picture.bitmap:=bitmap;
end;
← →
Voland (2001-12-28 01:43) [5]А узнать, какие ресурсы зашиты можно с помощью Борландовского же Resource Editor.
В C Builder видел точно, в Дельфи - не уверен сейчас, в Инете можно и отдельно найти.
← →
skaminski (2001-12-28 01:53) [6]To Voland
Повторяю, Cards.dll - это 16-битная библиотека, и LoadBitmap никакой не поможет. Если, конечно, программа пишется не на Delphi 1 для Win 3.1x.
А те ресурсы, что туда зашиты, я уже вытащил в нормальный 32-битный ресурс для delphi 32 (см. мой пред. ответ).
И не затевайте бессмысленной дискуссии ;)
← →
skaminski (2001-12-28 01:59) [7]2 Blackweber
Какие функции (экспортируемые) зашиты это конечно. Но, разумеется, без параметров. И они (функции) становятся абсолютно бесполезными.
← →
Voland (2001-12-28 01:59) [8]Ах, простите, вспомнил - я ж это на 1-м Дельфине и писал :))))
← →
Blackweber (2001-12-28 21:14) [9]А если cards32.dll использовать?
← →
VadX (2002-01-05 12:39) [10]Можно просто натягать оттуда ResourseWorkshop-ом карты, сохранить в *.bmp и использовать далее...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c