Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 и использовать далее...




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.025 c
1-66259           Quest                 2001-12-29 09:44  2002.01.21  
Пропадает каретка в режиме редактирования ячейки TStringGrid


1-66284           StelZ                 2002-01-04 00:44  2002.01.21  
Всегда наверху


7-66365           Jazzy$                2001-09-30 19:26  2002.01.21  
netUserGetInfo


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


1-66261           Smile                 2002-01-01 20:51  2002.01.21  
Изменение вида кнопки