Использование карточно библиотеки Cards.dll

Предыдущая тема Следующая тема Перейти вниз

Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 9:50 am

Доброго времени суток!
Недавно прочитал статью А. Климова в RSND (http://www.rsdn.ru) об использовании карточной библиотеки, встроенной в Windows. Проект был написан на Visual Basic.Net, я перевожу его на FreeBASIC. Пытаюсь использовать библиотеку в программе, однако она выдаёт ошибку.

Пример кода:

Код:
' Использую опции компилятора:
' fbc -c -l cards -p c:\windows\system32

' Объявление функций Windows, расположенных в Cards.dll
' Инициализация библиотеки
Dim Shared cdtInit As Function(ByRef Width As Integer, ByRef Height As Integer) As Boolean
' Рисование карты
Dim Shared cdtDrawExt As Function(ByVal hdc As Any Ptr, ByVal X As Integer, ByVal Y As Integer, ByVal dX As Integer, ByVal dY As Integer, ByVal Card As Integer, ByVal Suit As Integer, ByVal Color As Long) As Boolean
' Очистка
Dim Shared cdtTerm As Sub()

' Переменные
Dim hWnd As HWND ' Дескриптор окна
Dim hDC As HDC ' Контекст устройства
Dim hndlLib As Any Ptr ' Дескриптор библиотеки Cards.dll
Dim intWidth, intHeight As Integer ' ширина и высока карты

' Получаю контекст устройства
hDC = GetDC(hwnd)         
' Загрузка библиотеки
hndlLib = DylibLoad("cards")
cdtInit = DylibSymbol(hndlLib, "cdtInit")
cdtTerm = DylibSymbol(hndlLib, "cdtTerm")

' Инициализация карточной библиотеки
cdtInit(intWidth, intHeight) ' Проходит успешно, возвращает ширину и высоту карты 71*93

' Рисую карту на контексте устройства
cdtDrawExt(hDC, 10, 10, intWidth, intHeight, 0, 0, 0) ' Вызывает ошибку
В оригинальном примере функция cdtDrawExt объявлена так:
Код:
Private Declare Function cdtDrawExt lib "cards.dll"(ByVal hdc As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal dX As Integer, ByVal dY As Integer, ByVal Card As Integer, ByVal Suit As Integer, ByVal Color As Long) As Boolean
Остальные функции работают, а cdtDrawExt — нет. Может быть, я неправильно передаю контекст устройства в функцию. Но как правильно? Через указатель - @hDC - тоже вызывает ошибку.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 10:50 am

если чеснтно, то я vb.net не имел дело, а вот в vb переменнаяя типа integer занимает 2 байта, а во FB 4, вместо него нужно использовать тоже целочисленный тип, но 2-х байтовый short
И непойму как у вас компилится прога, когда вы используете тип boolean, во FB его нет, вместо него (если не ошибаюсь) нужно использовать тип byte
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 11:16 am

Да и вообще у мня складывается впечатление что вы пишете на каком то другом языке))
Мой совет скачать с офсайта мануал FB-manual-0.20.0-chm, там достаточно подробно описан весь синтаксис FB и его функции. Правда все на английском, зато почти везде прилагается пример использования, так что думаю весьма полезно будет его полистать.
А на счет вашего вопроса, так просто контекст устройства получить нельзя, для етого необходимо создать полноценное окно, а после уже от етого плясать. Седня вечером попробую написать примерчик как это можно сделать. Просто vb является более просым языком программирования, в часности создания графического интерфейса, поэтому некоторых отпугивает тот факт, что многое во FB приходится писать вручную (хотя и ето уже практически решено, есть уже достаточно мощные среды разработки наподобе vb).
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 12:02 pm

В VB.Net Integer тоже занимает 4 байта. Я изменил также возвращаемое значение функции cdtDrawExt с Boolean на Integer (такой тип возвращают многие функции Windows, а также Color - на Integer), но программа всё равно не работает. Видимо, это связано с передачей контекста устройства в функцию. Объявление в VB.Net — IntPtr я заменил на Any Ptr, так как оно более всего подходит для FreeBASIC.

Программа собирается в FBEdit'ом, из стандартного шаблона DialogAsMain, приведу весь код программы.
Код:

/'
fbc Nine.bas Nine.bi Nine.rc -c -gui -l cards -p c:\windows\system32
Добавлять ссылку на "Cards.dll" пришлось вручную потому что FBEdit некорректно обрабатывает Declare Function ... Lib "cards.dll"
'/
#include once "windows.bi"
#Include Once "win/commctrl.bi"
#Include Once "win/commdlg.bi"
#Include Once "win/shellapi.bi"
#Include "Nine.bi"

' Диалог
#Define frmAbout         1100

Declare Function WinMain(ByVal hInst As HINSTANCE,ByVal hPrevInst As HINSTANCE,ByVal CmdLine As ZString ptr,ByVal CmdShow As Integer) As Integer

Dim Shared cdtInit As Function(ByRef Width As Integer, ByRef Height As Integer) As Boolean
Dim Shared cdtDrawExt As Function(ByVal hdc As Any Ptr, ByVal X As Integer, ByVal Y As Integer, ByVal dX As Integer, ByVal dY As Integer, ByVal Card As Integer, ByVal Suit As Integer, ByVal Color As Integer) As Integer
Dim Shared cdtTerm As Sub()


Dim Shared hInstance As HMODULE
Dim Shared CommandLine As ZString Ptr
Dim Shared hWnd As HWND

' Контекст устройства
Dim Shared hDC As HDC

' Ширина карты и высота
Dim Shared intWidth As Integer
Dim Shared intHeight As Integer

' Дескриптор карточной
Dim Shared hndlLib As Any Ptr

Public Const ClassName As String = "FreeBasicForm"
Public Const AppName As String = "Nine"
Public Const AboutMsg As String = !"Cards game ""Nine""\13\10Copyright © Sethi Corporation, 2008"
'
' Program start
'
   hInstance = GetModuleHandle(NULL)
   CommandLine = GetCommandLine
   
   InitCommonControls
   WinMain(hInstance, NULL, CommandLine, SW_SHOWDEFAULT)
   End(0)
'
' Program End
'
Private Function WndProc(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer
   Select Case uMsg
      Case WM_INITDIALOG
         ' FormLoad
         hWnd = hWin
         ' Получаем контекст устройства
         hDC = GetDC(hwnd)         
         ' Загрузка карточной библиотеки
         hndlLib = DylibLoad("cards")
         cdtInit = DylibSymbol(hndlLib, "cdtInit")
         cdtTerm = DylibSymbol(hndlLib, "cdtTerm")
         ' Инициализация карточной библиотеки
         cdtInit(intWidth, intHeight)
      Case WM_COMMAND
         Select Case HiWord(wParam)
            Case BN_CLICKED, 1
               Select Case LoWord(wParam)
                  Case mnuFileExit
                     SendMessage(hwnd, WM_CLOSE, 0, 0)
                     '
               End Select
               '
         End Select
         '
      Case WM_PAINT
         ' Paint the window's client area.
         ' Здесь выдаёт ошибку
         cdtDrawExt(hDC), 10, 10, intWidth, intHeight, 0, 0, 0)
      Case WM_CLOSE
         ' Очистка
         cdtTerm()
         DylibFree(hndlLib)
         DeleteDC(hDC)
         DestroyWindow(hWnd)
      Case WM_DESTROY
         PostQuitMessage(NULL)
      Case Else
         Return DefWindowProc(hWin, uMsg, wParam, lParam)
   End Select
   Return 0
End Function


Private Function WinMain(ByVal hInst As HINSTANCE, ByVal hPrevInst As HINSTANCE, ByVal CmdLine As ZString ptr, ByVal CmdShow As Integer) As Integer
   Dim wc As WNDCLASSEX
   Dim msg As MSG

   ' Setup and register class for dialog
   wc.cbSize = SizeOf(WNDCLASSEX)
   wc.style = CS_HREDRAW or CS_VREDRAW
   wc.lpfnWndProc = @WndProc
   wc.cbClsExtra = 0
   wc.cbWndExtra = DLGWINDOWEXTRA
   wc.hInstance = hInst
   wc.hbrBackground = Cast(HBRUSH, COLOR_BTNFACE + 1)
   wc.lpszMenuName = Cast(ZString Ptr, mnuMain)
   wc.lpszClassName = @ClassName
   wc.hIcon = LoadIcon(NULL, IDI_APPLICATION)
   wc.hIconSm = wc.hIcon
   wc.hCursor = LoadCursor(NULL, IDC_ARROW)
   RegisterClassEx(@wc)
   
   ' Create and show the dialog
   hwnd = CreateDialogParam(hInstance, Cast(ZString Ptr, frmMain), NULL, @WndProc,  NULL)
   ShowWindow(hWnd, CmdShow)
   UpdateWindow(hWnd)
   
   ' Message loop
   Do While GetMessage(@msg, NULL, 0, 0)
      TranslateMessage(@msg)
      DispatchMessage(@msg)
   Loop
   Return msg.wParam
End Function

Думую, что ошибка кроется в передаче контекста устройства в функцию cdtDrawExt, потому как если закомментировать её вызов, то всё прекрасно работает.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 12:07 pm

И как его правильно передать? Через VarPtr(hDC) не проходит (он же @hDC).
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 12:24 pm

нееее, его ваще нельзя получить, пока не создаш само окно. Если в вб окно создается одним кликом мышки, а остальное компилятор делать сам, то FB необходимо полностью все делать вручную наподобе как в примере fb\examples\Windows\gui\hello.bas
Сеня вечером я постараюсь написать примерчик как ето можно сделать с данной библиотекой, посто у мня ща тока 98-я винда, а на ней какйто странный формат именно этой библиотеки, что FB даже не может ее загрузить стандартными средствами (те через DyLibLoad), а дома на ХР я напишу как ето делается
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 12:27 pm

пардон, топик выше не заметил, косяк в том что на скока я помню стандартное окно не создает по умолчанию графического контекста, его нужно создавать отдельной API функцией.
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 12:32 pm

Во, кстать в указанном мной примере выше какраз этот контекст и создается с помощю ф-ии BeginPaint при событии WM_PAIN
Код:
hDC = BeginPaint( hWnd, @pnt )
где помоему hWnd - хендл окна, а hDC - какраз хендл той лубуды, на которую и нужно отрисовывать всю графику
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 12:41 pm

Выдаёт ошибку даже так (для краткости опустил часть кода):
Код:

Case WM_PAINT
    ' Paint the window's client area.
    Dim pnt As PAINTSTRUCT  = any
    hDC = BeginPaint(hWnd, @pnt)
    cdtDrawExt(@hDC, 10, 10, intWidth, intHeight, 0, 0, 0)
    EndPaint(hWnd, @pnt)
Или так
Код:

Case WM_PAINT
    ' Paint the window's client area.
    Dim pnt As PAINTSTRUCT  = any
    hDC = BeginPaint(hWnd, @pnt)
    cdtDrawExt(hDC, 10, 10, intWidth, intHeight, 0, 0, 0)
    EndPaint(hWnd, @pnt)
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 12:51 pm

А вообще hDC присваевается какое либо значаение?
Попробуйте допустим вывести его в консоль через
print hDC
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 1:09 pm

Да этому hDC присваивается значение.
(Я выводил не через консоль, а с помощью MessageBox(hWnd, Str(hDC), Str(@hDC), MB_OK))
В тексте выводит число, а в заголовке - адрес этого hDC.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Чт Авг 21, 2008 1:17 pm

После того, как я решу эту ошибку (или не решу), обещаю выложить пример написания карточной игры на FreeBASIC.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 1:39 pm

Блин, ну незнаю, возможно еще в этом косяк:
Код:
Dim Shared cdtDrawExt As Function(ByVal hdc As Any Ptr, ByVal X As Integer, ByVal Y As Integer, ByVal dX As Integer, ByVal dY As Integer, ByVal Card As Integer, ByVal Suit As Integer, ByVal Color As Integer) As Integer
Здесь у вас
ByVal hdc As Any Ptr
лучше всетаки его сделать типом HDC, хотя он вродебы и является integer ptr.
Да, кстать не рекомендую называть переменные и типы одинаково, FB в отличие от Си не различает регистра, может быть еще и тут какая путаница выходит.
Кароч вечером сеня постараюсь поколупаться, мож че и найду...
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Чт Авг 21, 2008 7:05 pm

Наконец то я дошел до дома))
По пути домой я вспомнил про такую весчь как cdecl и ей подобные, те форматы размещения парабетров в функциях бывают разные и компилятор не божет сам подобрать нужный, поэтому для етого требуется явно указать какой используем (к примеру, если не ошибаюсь, в паскале, параметры в функции идут в обратном порядке). Поэтому во FB стараются использовать функции, которые уже предопределены как надо в статических библиотеках.
ОДНАКО, я воткнул обсуждаемый кусок кода в указанный мной примерчик, и он у мня почемуто заработал, ничего я явно не указывал.

Небуду я его выделять, а то неудобно будет читать.

#include once "windows.bi"
declare function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
end WinMain( GetModuleHandle( null ), null, Command( ), SW_NORMAL )
'':::::
function WndProc ( byval hWnd as HWND, _
byval wMsg as UINT, _
byval wParam as WPARAM, _
byval lParam as LPARAM ) as LRESULT
function = 0
select case( wMsg )
case WM_CREATE
exit function
case WM_PAINT
dim rct as RECT
dim pnt as PAINTSTRUCT
dim hDC as HDC
hDC = BeginPaint( hWnd, @pnt )
GetClientRect( hWnd, @rct )
'тут кусок который я воткнул *****************************
Dim cdtInit As Function (ByRef pWidth As Integer, ByRef pHeight As Integer) As byte
Dim cdtDrawExt As Function (ByVal hdc As any ptr, ByVal X As Integer, ByVal Y As Integer, ByVal dX As Integer, ByVal dY As Integer, ByVal Card As Integer, ByVal Suit As Integer, ByVal pColor As Integer) As integer
Dim hLib As Any Ptr
dim as integer pW, pH
hLib=DyLibLoad("cards.dll")
cdtInit=DyLibSymbol(hLib, "cdtInit")
cdtDrawExt=DyLibSymbol(hLib, "cdtDrawExt")
cdtInit(pW, pH)
cdtDrawExt(hDC, 100, 100, pW, pH, 0, 0, 0)
'**********************************************************
EndPaint( hWnd, @pnt )
exit function
case WM_KEYDOWN
if( lobyte( wParam ) = 27 ) then
PostMessage( hWnd, WM_CLOSE, 0, 0 )
end if
case WM_DESTROY
PostQuitMessage( 0 )
exit function
end select
function = DefWindowProc( hWnd, wMsg, wParam, lParam )
end function

'':::::
function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
dim wMsg as MSG
dim wcls as WNDCLASS
dim hWnd as HWND
function = 0
with wcls
.style = CS_HREDRAW or CS_VREDRAW
.lpfnWndProc = @WndProc
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = hInstance
.hIcon = LoadIcon( NULL, IDI_APPLICATION )
.hCursor = LoadCursor( NULL, IDC_ARROW )
.hbrBackground = GetStockObject( WHITE_BRUSH )
.lpszMenuName = NULL
.lpszClassName = @"HelloWin"
end with
if( RegisterClass( @wcls ) = FALSE ) then
MessageBox( null, "Failed to register wcls", "Error", MB_ICONERROR )
exit function
end if
hWnd = CreateWindowEx( 0, _
@"HelloWin", _
"The Hello Program", _
WS_OVERLAPPEDWINDOW, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
NULL, _
NULL, _
hInstance, _
NULL )
ShowWindow( hWnd, iCmdShow )
UpdateWindow( hWnd )
while( GetMessage( @wMsg, NULL, 0, 0 ) <> FALSE )
TranslateMessage( @wMsg )
DispatchMessage( @wMsg )
wend
function = wMsg.wParam
end function

Даже могу показать че получилось))

avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Пт Авг 22, 2008 5:39 am

Спасибо большое, теперь я понял свою ошибку. Если инициализировать (DyLibLoad и DyLibSymbol) библиотеку Cards.dll в начале загрузки окна, то при рисовании карты в событии WM_PAINT выдаётся ошибка. Нужно просто инициализировать её в самом событии WM_PAINT.

Теперь мне осталось рассказать, как правильно пользоваться библиотекой Cards.dll для написания карточных игр.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  tux в Пт Авг 22, 2008 6:01 am

ООО, ну тут уж извини, колупайся сам))
Наскока я понял, эта библиотека может тока рисовать текстурки карт и все, в ней других функций я не нашел (я бы вообще ещеб сто лет не знал бы про нее, да рисовал бы все в опенГл-е). А весь алгоритм придется писать вручную. Вообще написать алгоритм какогонибудь пасьянса проблем нет, а ченить на подобе "Дурака", то тут бы я и сам наверное не решился, тк это уже элементы искусственного интелекта...
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Использование Cards.dll

Сообщение  justar в Сб Сен 06, 2008 5:55 pm

А что означают параметры Suite и pColor?

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Использование карточно библиотеки Cards.dll

Сообщение  justar в Сб Сен 06, 2008 7:55 pm

tux пишет: а ченить на подобе "Дурака", то тут бы я и сам наверное не решился
А я вот наоборот загорелся ;-)
так как это уже элементы искусственного интелекта...
Этим и интересно. Но ты, увы, не прав - IMHO, большинство карточных программ не на искусственном интеллекте основаны - они не самообучаются и в одинаковых ситуациях всегда ведут себя одинаково и совершают одинаковые ошибки. Поэтому сильному игроку в них и неинтересно играть.

А мне вот захотелось написать преферанс именно с искусственным интеллектом.
Не уверен, что осилю, но попытаться надо.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Замабувараев в Пн Сен 08, 2008 12:09 pm

Эта библиотека содержит изображения карт, рубашек и специальных символов (Х и 0), предназначена для рисования, никакого искуственного интеллекта в ней нет, логику игры придётся писать самостоятельно.
О том, как использовать Cards.dll в своих программах написано здесь:
http://freebasic.justforum.net/forum-f6/tema-t57.htm
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  justar в Пн Сен 08, 2008 11:38 pm

zamabuvaraeu пишет:Эта библиотека содержит изображения карт, рубашек и специальных символов (Х и 0), предназначена для рисования, никакого искуственного интеллекта в ней нет, логику игры придётся писать самостоятельно.
Это само собой понятно

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  justar в Пн Сен 08, 2008 11:45 pm

zamabuvaraeu пишет:О том, как использовать Cards.dll в своих программах написано здесь: http://freebasic.justforum.net/forum-f6/tema-t57.htm
Спасибо

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Использование карточно библиотеки Cards.dll

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения