J'ai passé du temps à essayer de créer une fenêtre enfant d'une fenêtre existante en utilisant le code suivant sur JNA (Java Native Access) mais je suppose que c'est à peu près le même avec tous les autres langages de programmation essayant d'utiliser l'API Windows.Comment créer une fenêtre enfant Microsoft Windows en utilisant JNA
Voici ma déclaration de CreateWindowsExA:
public int CreateWindowExA(int i, String string, String string0, int i0, int i1, int i2, int i3, int i4, int ninja, Object object, Object object0, int i5);
Et voici comment je l'appelle:
int childLabel = user32.CreateWindowExA
(
0, //sets style to default
"STATIC", //window style is label
"Show Message", //label text is show Message
1342177280, // WS_CHILD + WS_VISIBLE = &H40000000 + &H10000000
10, //x
90, //y
100, //width
0, //height
parentWindowHandler, //a valid handler to a window (has been tested and is valid)
null, // a handler to a menu
null, //A handle to the instance of the module to be associated with the window. (NO IDEA)
0 //arguments list (no idea)
);
Après un appel à la fonction que je reçois un gestionnaire valide au bouton ... Mais ce n'est pas visible. Un appel à getLastError et un appel ultérieur à TranslateMessage me donnent "La fonction s'est terminée avec succès". De plus, si j'appelle GetAncestor (childButton, 3), je récupère mon handle dans le parentWindowHandler. Je peux aussi appeler GetWindowTextA (childButton..bla) et j'obtiendrai la chaîne Show Message. Donc, évidemment, j'ai créé un enfant de la parentWindow et il est là. Cependant, ce n'est pas visible. La prochaine chose qui vient à l'esprit est que ma fenêtre/étiquette est dans le bas de l'index z de son parent, donc d'autres appels doivent être faits et j'ai l'intention de le faire. Mais si je suis dans la mauvaise direction, je vais perdre un peu de temps.
Comment rendre cet enfant visible ou qu'est-ce que je fais de mal? Vous devriez noter que je n'appelle pas ceci dans un rappel ou n'envoie aucun msg.
Des pointeurs?