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

Вниз

Картишки   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-66218
Mute
2001-12-18 13:08
2002.01.21
Через ADO+ODBC к INFORMIX


3-66191
Гоша
2001-12-13 19:00
2002.01.21
Delete from master-detail via stored procedure


1-66312
BOOOMER
2002-01-04 17:17
2002.01.21
Actions


7-66383
Dmitry V. Averuanov
2001-10-04 11:35
2002.01.21
Не удается передать Tbitmap в качестве параметра...


3-66199
Grey
2001-12-12 18:43
2002.01.21
Interbase и потоки