Voilà j’ai une fenêtre de dialogue avec DialogBox à l’aide de l’éditeur des ressources VC++ j’y ai inséré un tas de contrôles Edit, Boutton, etc..
J’ajuste la taille de la fenêtre pour que tous les contrôles soient visibles sans pour autant que la boîte dialogue prenne tous l’écran je compile je fais des essais tout est parfait.
Le problème est quand j’exécute le .exe sur un autre ordinateur, les caractéristiques d’affichages ne sont plus les mêmes. Certains contrôles ne sont plus visibles même quand je maximise la boîte de dialogue.
Comme je disais plus haut, les dimensions et positions des controles doivent être calculés en fonction de la résolution d'écran. La fonction GetSystemMetrcis() permet de retouver les dimensions de l'affichage.
Cela est du à la résolution de l'ecran.
Tu n'y peux directement rien. La seule parade est de gérer le positionement et la taille des controles en dynamique.
merçi pour l'indication
mais sachant que je suis un imposteur pour l'informatique et que le seul langage que je connaisse bien est le C avec des notions d'API win32, je reste dans le brouillard
je souhaiterais un peut plus d'indications ou une documentation à consulter ou un exemple etc..
merçi
Salut,
Ce problème est l'une des raisons pour lesquelles je n'aime pas l'éditeur de ressources. Pour que l'application ait la même apparence sur toutes les résolutions d'écran, j'utilise CreateWindow() pour créer les controles pendant le traitement de WM_INITDIALOG. La position et les dimensions des controles seront calculés en fonction de la résolution d'écran récupérée avec la fonction GetSystemMetrics().
BruNews >> Oui c'est vrai qu'avec les controles dans les ressources la boite s'affiche plus vite. Mais il ne s'agit que de la première apparition de cette boite de dialogue lors de son lancement. Après, il n'y a plus de différence. Pour ce genre de cas, je pense qu'il vaut mieux sacrifier une petite seconde pour le premier affichage de la boite et avoir le résultat souhaité.
Juste pour dire qu'on peut faire les MoveWindow dans WM_INITDIALOG.
J'ai fait ainsi dans un petit jeu dans lequel j'ai 100 STATIC qui servent de cellules, y a pas photo question vitesse avec création dynamique.
Désolé, j'avais supprimé ma question car je pense que MoveWindow() redimensionnera la boite pendant WM_INITDIALOG. Tu as déjà testé le fonctionnement de MoveWindow() et SetWindowPos() sur une boite pendant WM_INITDIALOG?
Rebonjour à tous merçi de l'intérêt
c'est très sympa cette richesse du débat
Excusez de ne pas suivre tout à fait le rythme<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Je reviens pour poser la question autrement
J’ai une application ou ne figure pas de dialogue crée par DialogBox ou autre, tous les contrôles sont créés CreateWindowEx et non avec l’éditeur des ressources
ces dimensions dans les contrôles et les fenêtres sont ajustées pour que tout soit apparents c'est le cas après compilation essais.
Le problème est quand je lance l'éxécutable sur une autre machine les caractéristiques d'affichages ne sont plus les mêmes. Certains contrôles ne sont plus visibles même quand je maximise la boîte de dialogue.
et pourtant je n'utilise pas d'éditeur de ressource rien que pour un menu déroulant qui est "sans intérêt"
effectivement en utilisant GetSystemMetrics j'ai pu définir des les dimmensions et positions des contrôles relativement à la résolution de l'écran. cela permet de s'assurer de la visibilité des contrôles sur n'importe quelle machine. il faut juste bien maitrîser les différents valeurs possibles que peut prendre le paramètre fournit à GetSystemMetrics.