Scuz
Messages postés4Date d'inscriptiondimanche 12 mars 2006StatutMembreDernière intervention18 juillet 2007
-
9 juil. 2007 à 19:08
Scuz
Messages postés4Date d'inscriptiondimanche 12 mars 2006StatutMembreDernière intervention18 juillet 2007
-
17 juil. 2007 à 13:51
Bonjour,
Je débute avec les MFC sous Visual C++, et j'ai crée une application SDI. J'aimerais lancer une application extérieure (.exe) en lui spécifiant une position et une dimension dans ma fenetre. Je ne sais pas si cela est possible, et si cette application peut rester au premier plan.
CreateProcess me retourne toujours FALSE.
En regardant d'un peu plus pres, peut etre que l'erreur provient deSTARTUPINFO. En effet, juste avant d'etre utilisée par CreateProcess(), 3 parametres lpReserved, lpReserved2 et Desktop sont en erreur.
Si vous avez une idée de l'endroit ou j'ai faux dans mon code, je suis preneur
Le plus simple restant de faire des fenêtres ne se superposant pas, et de juste minimiser/restaurer l'appli que tu lance quand l'utilisateur minimise/restaure la tienne. Un peu comme ça quoi : on voit le bureau à travers.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Scuz
Messages postés4Date d'inscriptiondimanche 12 mars 2006StatutMembreDernière intervention18 juillet 2007 10 juil. 2007 à 11:17
Salut, merci pour vos réponses.
En fait, mon application sera utilisée à terme sans souris. De plus, je pars d'un projet existant.
Mon application VC++ utilise 2 écrans l'un au dessus de l'autre, et j'aimerais que dans une partie de mon écran supérieur, je puisse lancer une application extérieure et que celle-ci reste toujours visible (ne soit pas cachée par mon appli VC++).
Bien que j'ai réglé le dwflags à STARTF_USEPOSITION, CreateProcess retourne toujours FALSE.
Est ce que les différents arguments de CreateProcess vous paraissent approprié ?
// On met tout à zéro, ça facilite le travail car y a pas mal de reserved qui doivent être à zéro/NULL
ZeroMemory(&lpStartUpInfo, sizeof(lpStartUpInfo));
// La taille de la structure
lpStartUpInfo.cb = sizeof(lpStartUpInfo);
// Pour utiliser un des membre, il faut le préciser dans les flags
lpStartUpInfo.dwFlags = STARTF_USEPOSITION | STARTF_USESHOWWINDOW;
// Position du bord haut gauche de la fenêtre
lpStartUpInfo.dwX = 300;
lpStartUpInfo.dwY = 300;
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 10 juil. 2007 à 12:55
La msdn en parle ici. (Y a pas que cette page bien sûr -> regarder l'arborescence à droite)
A ce que j'ai compris, y a pas moyen de faire du CreateProcess ou on sélectionne la fenêtre, mais les coodonnées d'ouverture de la fenêtre sont "unifiée". C'est comme si on avait un très grand écran quoi, et on peut spécifier dwX et dwY pour aller dans un screen précis. Pour connaitre les coordonnées d'une fenêtre dans un le grand rectangle, on peut utiliser les fonctions détaillées dans les références (cf mon lien plus haut). M'enfin dans ton cas, tu préfèrerat peut être les coder en dur (Ou dans un fichier ini...)