js-ctypes 学習:IUP でドラッグ&ドロップ

2017-03-29 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-03-27)の記事「js-ctypes 学習:IUP - Portable User Interface」に続いて、
今度は、
IUPでのドラッグ&ドロップ・コールバック処理
に挑戦。

具体的には、
昨年3月(2016-03-19)の記事「GSL Shell 学習:IUP でドラッグ&ドロップ
に載せたコードをSpiderMonkeyに移植。


出来たコードは:
// ===== convert to '.js' =====
 var WinABI = ctypes.winapi_abi; var CBABI = ctypes.stdcall_abi;
 var VOID = ctypes.void_t; var VoidA = ctypes.voidptr_t;
 var Char = ctypes.char; var CharA = Char.ptr;
 var Uint8 = ctypes.uint8_t; var Byte = Uint8;
 var WORD = ctypes.uint16_t; var DWORD = ctypes.uint32_t;
 var Int32 = ctypes.int32_t;
 var Float = ctypes.float32_t; var Double = ctypes.float64_t;
 var HANDLE = ctypes.size_t; var HWND = HANDLE; var hWnd = HANDLE;
 var BOOL = ctypes.bool;
 var LPARAM = ctypes.size_t; var LPTSTR = ctypes.jschar.ptr;
var Cast = ctypes.cast;
var lib = ctypes.open( 'iup' );

var CB_DnD = ctypes.FunctionType( CBABI, VOID, [ HANDLE, CharA, Int32, Int32, Int32 ] );

var IupOpen = lib.declare( 'IupOpen', WinABI, VOID, Int32 );
var IupClose = lib.declare( 'IupClose', WinABI, VOID );
var IupDialog = lib.declare( 'IupDialog', WinABI, HANDLE, HANDLE );
var IupSetAttributes = lib.declare( 'IupSetAttributes', WinABI, VOID, HANDLE, CharA );
var IupSetCallback = lib.declare( 'IupSetCallback', WinABI, VOID, HANDLE, CharA, CB_DnD.ptr );
var IupPopup = lib.declare( 'IupPopup', WinABI, VOID, HANDLE, Int32, Int32 );

IupOpen( 0 ); // ----- これ必須!!!

function onDnD( Z, F, n, x, y ){
print( Z, n, x, y ); // -------- 数値, 0, x, y
fname = F.readString() // ----- 日本語含むとダメ???
IupClose()
}
var fname;
var dlg = IupDialog( 0 ) // -- 枠だけ
IupSetAttributes( dlg, '"SIZE"="160x120", "TITLE"="DnD here"' )
IupSetCallback( dlg, 'DROPFILES_CB', CB_DnD.ptr(onDnD) )
IupPopup( dlg, 100, 100 )
// -----------------
print( fname ); // -- これで フルパス:「\」セパレート
print( fname.split( '\\' ).slice( 0, -1 ).join( '\\' ) ); // folder 部分
print( fname.split( '\\' ).slice( -1 ) ); // ファイル名部分
var _ = readline();
こんな感じ?

これで、
D&Dでファイル名を得ることが出来る。


関連して今回学習したこと:

1.SpiderMonkey の変数名では、アンダーバー1文字でも可

2.GSL Shell の時、void* で定義していた IupDialog の引数を、
  正しく(?) HANDLE で定義すると利用時がスッキリする。

3.[char*].readString() では、日本語文字がダメ???



本日はここまで。


SpiderMonkey ( JavaScript/js-ctypes ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170225
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク