PHP EXE programmá fordítása 2.

Default book

Az előző oldalon megtanultuk, hogyan lehet egyáltalán EXE fájlt készíteni. most megnézzük, hogyan lesz ablakozós a program.

Az ablakozó programok két részből állnak:

1. Definiálni kell az ablakokat és meg kell jeleníteni azokat

2. Az ablakokkal történő eseményeket fel kell dolgozni.

A Windowsos alkalmazás elkészítéséhez be kell ágyazni a winbinder.php-t

include("include/winbinder.php");

A windowsos programok ablakozó rendszerét létre kell hozni

$mainwin = wb_create_window(NULL, "ablak neve", "alkalmazás neve",szélesség, magasság);

Definiálni kell grafikus elemeket:

$label = wb_create_control($mainwin, Label, $Errormsg, 10, 12, WIDTH-40, HEIGHT-150, 0, WBC_CENTER);

wb_set_font($label, wb_create_font("Tahoma", 10, null, FTA_BOLD));

$statusbar = wb_create_control($mainwin, StatusBar, date("Y.m.d H:i:s A"));

A Windowsos programok egy végtelen ciklusban futnak és várják a felhasználó beavatkozását. Ez az indulás után f?program, amit az alábbi paranccsal lehet beállítani:

wb_set_handler($mainwin, "process_main");

Ezt a függvényt persze definiálni is kell, például egy include fájlban:

function process_main($window,$id){

  switch ($id){
    case IDEVENTVALAMI
        más műveletek...
        break
    case IDCLOSE
      wb_destroy_font();
      wb_destroy_window($window);
     break;
    stb....
  }

}

A programot láthatóvá kell tenni:

wb_set_visible($mainwin, TRUE);

És el kell indítani a f?programot:
wb_main_loop();

A teljes példaprogram kb így néz ki:

<?php define('APPNAME', "logon/logoff progi v1.4"); define("WIDTH",     400); define("HEIGHT",    300); define("IDEVENTCLOSE",1024); include ("include/winbinder.php");                  // Include WinBinder library if(wb_get_instance(APPNAME, TRUE)) die(); $mainwin = wb_create_window(NULL, PopupWindow, APPNAME, WIDTH, HEIGHT);  // Create application window // Create label control inside the window if(!$help){   $label = wb_create_control($mainwin, Label, $Errormsg, 10, 12, WIDTH-40, HEIGHT-150, 0, WBC_CENTER); }else{   $label = wb_create_control($mainwin, Label, $Errormsg, 10, 12, WIDTH-40, HEIGHT-150, 0); } //betűtípus állítása wb_set_font($label, wb_create_font("Tahoma", 10, null, FTA_BOLD)); //windows handler wb_set_handler($mainwin, "process_main"); // Create status bar $statusbar = wb_create_control($mainwin, StatusBar, date("Y.m.d H:i:s A")); wb_set_font($statusbar, wb_create_font("Tahoma", 8)); //Csak akkor számít, ha az ismételt belépés volt. if(!$help){   //Ha kilépés volt   if($EventID == 538)  {     $BtnText='Belépés';     $EventID = 540;     $Event = $BtnText;   }else{     $BtnText='Kilépés';     $EventID = 538;        $Event = $BtnText;   }  $dx = mt_rand(-100,100);  $dy = mt_rand(-10,10);  $EventExit = wb_create_control($mainwin, PushButton, $BtnText, (int)(WIDTH / 2) - 60+$dx, HEIGHT-140+$dy, 120, 20, IDEVENTCLOSE, WBC_CENTER);  wb_set_font($EventExit, wb_create_font("Tahoma", 10, null, FTA_BOLD)); } $Exit = wb_create_control($mainwin, PushButton, "&Ok", (int)(WIDTH / 2) - 30, HEIGHT-100, 60, 20, IDCLOSE, WBC_CENTER); wb_set_font($Exit, wb_create_font("Tahoma", 10, null, FTA_BOLD)); // Enter application loop //wb_set_image($mainwin, 'amcelogon.ico'); wb_set_visible($mainwin, TRUE); wb_main_loop(); //-------------------------------- FUNCTIONS ----------------------------------- /* Process main window commands */ function process_main($window, $id) {     global $label, $statusbar;     static $pos;     switch($id) {         case IDEVENTCLOSE:                    regisztracio();          //Itt egy nem publikus kódrészlet van         case IDCLOSE:             wb_destroy_window($window);             wb_destroy_font();           break;     } } ?>