0

在 PHP 4.4.4(更准确地说是 bamcompiler)中,我尝试使用 w32api FFI 与 iup GUI 库进行交互,如下所示:

<?
$iup=new win32;
$iup->registerfunction("int IupOpen (int argc,string argv) From iup.dll");
$iup->registerfunction("int IupClose () From iup.dll");
$iup->registerfunction("int IupMainLoop () From iup.dll");
$iup->registerfunction("long IupDialog (long child) From iup.dll");
$iup->registerfunction("int IupShow (long child) From iup.dll");
$iup->registerfunction("long IupHboxv (long &child) From iup.dll");
$iup->registerfunction("long IupLabel (string title) From iup.dll");
$iup->registerfunction("long IupButton (string title,string action) From iup.dll");
$iup->registerfunction("long IupSetAttributes (long ih,string attrs) From iup.dll");
$iup->IupOpen(null,null);
$b=$iup->IupButton("vasile","apasa");
$l=$iup->IupLabel("asta e vasile");
$hbc=pack("L*x",$l,$b);
$hb=$iup->IupHboxv(&$hbc);
$dia=$iup->IupDialog($hb);
$iup->IupSetAttributes($dia,"SIZE=300x200");
$iup->IupShow($dia);
$iup->IupMainLoop();
$iup->IupClose();
?>

我得到的只是一个空窗口。

如果我将其中一个控件的地址提供给 IupHboxv ex:(&$b),我会在窗口中获得该控件,所以我认为它与打包字符串的地址有关。

w32api 太薄了,对于 pack 功能,我已经阅读了 Perl 文档。

4

0 回答 0