> 1 <

Автор Сообщение

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2853   2010-09-14 21:46 GMT+3 часа(ов)      
можно ли использовать winapi в sheme? и как подключать сторонние dll?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2856   2010-09-14 22:11 GMT+3 часа(ов)      
Зависит от реализации, т.к. CFFI везде реализован поразному.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2867   2010-09-15 01:25 GMT+3 часа(ов)      
Для Racket:
#lang racket
 
(require ffi/unsafe)
 
(define (string->c-string encoding text)
(let ([conv (bytes-open-converter "UTF-8" encoding)])
(let-values ([(bstr len result)
(bytes-convert conv (string->bytes/utf-8 text))])
(bytes-close-converter conv)
bstr)))
 
(define _HWND (_or-null _pointer))
(define _LPCTSTR _string/eof)
(define _LPCWSTR _string/utf-16)
(define _UINT _uint32)
 
;; int WINAPI MessageBoxA (HWND hWnd,
;; LPCTSTR lpText,
;; LPCTSTR lpCaption,
;; UINT uType);
(define-c MessageBoxA "User32.dll"
(_fun (hWnd lpText lpCaption uType)
:: (hWnd : _HWND) (lpText : _LPCTSTR)
(lpCaption : _LPCTSTR) (uType : _UINT)
-> _int))
 
(MessageBoxA #f (string->c-string "cp1251" "Текст")
(string->c-string "cp1251" "Заголовок") 0)
 
(define-c MessageBoxW "User32.dll"
(_fun (hWnd lpText lpCaption uType)
:: (hWnd : _HWND) (lpText : _LPCWSTR)
(lpCaption : _LPCWSTR) (uType : _UINT)
-> _int))
 
(MessageBoxW #f "Текст 2" "Заголовок 2" 0)
 

отредактировал(а) misha: 2010-09-15 01:36 GMT+3 часа(ов)

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2868   2010-09-15 01:55 GMT+3 часа(ов)      
мдаа...
почти ничего не понятно)
а есть где-то описание "операторов"? а то понятно только define и там часть winapi

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2869   2010-09-15 01:56 GMT+3 часа(ов)      
За код спс!!!

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2870   2010-09-15 02:04 GMT+3 часа(ов)      
>а есть где-то описание "операторов"?
Если я Вас правильно понял: FFI: Racket Foreign Interface

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2871   2010-09-15 02:27 GMT+3 часа(ов)      
ага. спс!
только вот что делает эта штука?(require ffi/unsafe) (в index не нашел)

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2872   2010-09-15 02:38 GMT+3 часа(ов)      
Require импортирует из указанного(-ых) модуля(-ей) определения указанные для экспорта (эти определения экспортируются с помощью provide). Читайте Importing and Exporting: require and provide.

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2873   2010-09-15 02:44 GMT+3 часа(ов)      
ага нашел уже. спс

это получается "открывает" какую-то "библиотеку" которая позволяет использовать некое C(c++)APi так?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2874   2010-09-15 03:09 GMT+3 часа(ов)      
ffi/unsafe позволяет вызывать функции из внешней библиотеки имеющей С-подобный API. define-c позволяет импортировать и правильно объявить эти функции, и т.к. С-подобный API подразумевает статическую типизацию, поэтому необходимо описать типы аргументов и тип возвращаемого значения. Это необходимо для правильного вызова функции, а также для правильной интерпретации возвращаемого значения.

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2875   2010-09-15 03:12 GMT+3 часа(ов)      
ага. большое спасибо

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2876   2010-09-15 03:17 GMT+3 часа(ов)      
Да не за что!) Приятно общаться с вежливым человеком)

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2891   2010-09-16 01:07 GMT+3 часа(ов)      
;BOOL Rectangle(
; __in HDC hdc,
; __in int nLeftRect,
; __in int nTopRect,
; __in int nRightRect,
; __in int nBottomRect
;);
 
 
(define-c Rectangle "Gdi32.dll"
 
(_fun (hdc nLeftRect nTopRect nRightRect nBottomRect)
 
:: (hdc : _HDC) (nLeftRect : _int)
 
(nTopRect : _int) (nRightRect : _int)
 
(nBottomRect : _int)
 
-> _bool))
 


как определить тип Hdc? и правильно ли сделал все остальное?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2898   2010-09-16 15:32 GMT+3 часа(ов)      
>как определить тип Hdc?
(define _HDC (_or-null _pointer))

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2899   2010-09-16 15:34 GMT+3 часа(ов)      
#lang racket
 
(require graphics/graphics)
 
(open-graphics)
 
(define vp (open-viewport "Demo" 200 100))
 
((draw-rectangle vp)
(make-posn 20.0 20.0) 160 60 "Red")
 
((draw-string vp)
(make-posn 70.0 55.0) "Привет!" "Blue")
 
(sleep 1)
 
((clear-solid-rectangle vp)
(make-posn 21.0 21.0) 158 58)
 
((draw-string vp)
(make-posn 80.0 55.0) "Пока!" "Blue")
 
(sleep 3)
 
(close-viewport vp)
 
(close-graphics)

kreol

Members


Статус

87 сообщений

Где: Ukraine Днепропетровск
Род занятий: студент
Возраст: 26

#2908   2010-09-17 01:32 GMT+3 часа(ов)      
о. так интересней) спс
> 1 <


Онлайн :

0 пользователь(ей), 8 гость(ей) :




Реклама на сайте: