Les lignes de code indispensables.
1/ La première ligne de code, (après le titre et les quelques indications d'usage, bien sûr), va servir à indiquer au script ou sont situées les différentes bibliothèques UNFIX et MSW dont il peut avoir besoin.
Ce n'est pas toujours indispensable, tout dépend de l'environnement dans lequel vous travaillez, ou dans lequel vous voulez faire exécuter votre programme...mais en cas de doute, il vaut mieux la mettre.
Et cette ligne est de toute façon indispensable, dans le cas d'une utilisation multiplateforme.
package.cpath=package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;
../lib/bcc_dll/?.dll; ../lib/mingw_dll/?.dll;"
2/ Puis vient:
require("wx")
Cette ligne indique au programme qu'il va devoir chercher et charger la library dynamique wx.dll, dans le cadre d'une utilisation hors "wrapper".
Cette dll, "wx.dll" est spéciale, elle est constituée d'un mélange de "lua et de wxWidgets" et se trouve dans le sous-répertoire "clibs" de "LuaForWindows" ou dans le répertoire "bin" de wxlua.
Vous devrez peut-être aussi, ajuster la variable package.cpath afin de la faire pointer vers l'emplacement correct de la bibliothèque partagée wx.dll ..
Ou alors renseigner les variables d'environnement dans:
Panneau de configuration -> Système -> Avancé -> Variables d'environnement -> ... ... ...
Ces deux premières lignes ne vous seront d'aucune utilité, si vous utilisez wxLua, wxLuaFreeze ou wxLuaEdit pour lancer votre programme... mais dans le doute, ça ne coute rien de les mettre toutes les deux ou au moins une, comme par exemple, require("wx")!
3/ Créer une fonction
main() pour encapsuler le code.
Ce n'est pas vraiment indispensable, mais cela permet, dans certains cas, de debuger plus facilement .
Et pour information:
Il n'est pas indispensable que le nom de la fonction soit: main()...
4/ Ne pas oublier en fin de fonction la ligne de code suivante:
nomFrame:Show(true)
(ça, c'est indispensable, sinon la frame ne s'affichera pas.)
5/ Ne pas oublier aussi, de lancer le programme en appellant la fonction principale.
main()..ou Nom_Fonction().
6/ Afin de pouvoir lancer la boucle d'évènements et de permettre au programme de s'exécuter...:
wx.wxGetApp: MainLoop()
Tout comme les paragraphes 1 et 2, cette dernière ligne de code n'aura aucune influence, si le programme doit être lancé avec wxLua, wxLuaFreeze, wxLuaEdit ou que le MainLoop() ait déjà éte lancé avec C++.
Mais elle est INDISPENSABLE, si vous utilisez par exemple, l'éditeur de texte "SciTE".
En un mot, si votre fenêtre s'ouvre, puis se referme immédiatement, la première chose à faire est de rajouter en dernière ligne de votre programme:
wx.wxGetApp():MainLoop().
Mais là aussi, en cas de doute, ne pas hésiter à rajouter cette ligne de code.
7/ Et pour une traduction en Français de certains noms implémentés dans les wxWidgets qui sont bien évidement en langue anglaise, rajouter en début de votre programme:
wx.wxLocale(wx.wxLANGUAGE_FRENCH)
PS: Surtout, n'oubliez pas d'associer dans "Options des dossiers" vos programmes avec extension ".wlua" avec son programme de lancement: wxLuaFreeze.exe