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;
    }
}
?>