Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-66256
Eraser
2002-01-03 12:04
2002.01.21
Фреймы, фреймы


1-66302
VlNek
2002-01-04 18:00
2002.01.21
Конвертирование bmp в jpeg


6-66316
ant_prg
2001-10-26 15:50
2002.01.21
Передача звука по сети


1-66226
ctapik-net
2002-01-02 01:11
2002.01.21
Загрузка изображения из RES-файла


3-66217
karafuto
2001-12-18 12:09
2002.01.21
Подмена базы в MS SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский