Forum Programmation.c++ Compilation d'un programme sous Mac OS X avec wxWidgets

Posté par  .
Étiquettes : aucune
0
20
oct.
2006
Bonjour,

Je cherche à faire fonctionner une application (http://olivier.coupelon.free.fr/teardrop/) sous Mac OS X. Elle utilise wxWidgets. Tout compile pour le mieux en ajoutant quelques librairies (pcre et wxWidgets, la version par défaut ne convenant pas), mais à l'exécution je ne peut rien saisir.
J'ai bien tenté de mimer la création d'une app à partir des sample de wxWidgets qui fonctionnent, mais ça n'arrange pas grand chose.

En fait, l'application après un Rez et un SetTools fonctionne, peut être redimensionnée, les sizers se mettent à jours, la toolbar fonctionne, mais pas les saisies ou les clics sur des boutons de l'applications (autre que ceux de la toolbar).

L'archive suivante compile sans souci ma machine de test : http://olivier.coupelon.free.fr/teardrop/download/teardrop-1(...)

Je suis novice sous Mac Os X, est-ce que quelqu'un aurait une idée ?

Merci d'avance !
  • # Focus

    Posté par  . Évalué à 1.

    Il me semble qu'il faut faire un "bundle" sous MacOS X pour que les fenêtres de l'application obtiennent le focus. Voir [1]

    Une alternative est de rajouter manuellement un appel vers "CPSEnableForegroundOperation" qui est dans la librairie CoreFoundation. Cherche le code dans les #ifdef __WXMAC__ dans le fichier wxwidgets.cpp de plplot par example [2].

    [1] http://en.wikipedia.org/wiki/Bundle_(Mac_OS_X)
    [2] http://plplot.sourceforge.net/
    • [^] # Re: Focus

      Posté par  . Évalué à 1.

      Merci pour les infos. Mon problème était un poil plus compliqué, mais j'ai fini par en trouver la cause (mais pas vraiment la raison).

      Depuis le début je crée bien un bundle, ce qui permet a l'appli d'avoir le focus. Mais certains controls de l'appli ne sont toujours pas accessibles. Ceci est du au fait que j'ai (mal) programmé l'interface à la main. J'ajoute des controls à des sizer contenu dans des panels qui eux-mêmes sont contenus dans des sizer qui...
      Bref je n'ai pas encore tout remis en ordre, mais je pense que pour que ça fonctionne, il ne faut pas mettre un sizer directement sous un control, mais systematiquement intercaler un wxPanel qui contient directement le control. Sur un test ça fonctionne.
      En tout cas ce comportement n'est valable que sous wxMac, wxMSW et wxGTK n'en tienne pas compte...
      Bientôt donc je l'espere une version 1.1 de Teardrop avec support de Mac OS X !

      Merci !

      Olivier
  • # Oui mais non !

    Posté par  . Évalué à 1.

    En fait le bug venait plutôt des wxStaticBoxSizer, mais quand on est pas au courant c'est difficile de trouver. En fait c'est ici :
    http://wxwidgets.org/manuals/2.6.3/wx_wxstaticbox.html
    On y trouve
    Please note that a static box should not be used as the parent for the controls it contains, instead they should be siblings of each other. Although using a static box as a parent might work in some versions of wxWidgets, it results in a crash under, for example, wxGTK.
    Also, please note that because of this, the order in which you create new controls is important. Create your wxStaticBox control before any siblings that are to appear inside the wxStaticBox in order to preserve the correct Z-Order of controls.

    Ce qui était la cause de mon problème !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.