Accueil > Forum > > > > redimensionnement d'une dialogue et déplacement des boutons
redimensionnement d'une dialogue et déplacement des boutons
dimanche 20 juin 2004 à 12:05:46 |
redimensionnement d'une dialogue et déplacement des boutons

cosmobob
|
j'ai une boite de dialogue avec un bouton en bas a droite, et quand le boite de dialogue est maximisée, j'aimerai que le bouton se trouve a nouveau en bas a droite au lieu de rester a la meme place. ya til un moyen de faire ca automatiquement? faut t'il sinon déplacer manuellement le bouton, et si oui comment faire? merci ;)
|
|
dimanche 20 juin 2004 à 12:18:54 |
Re : redimensionnement d'une dialogue et déplacement des boutons

BruNews
|
MoveWindow calcule dans WM_SIZE.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
dimanche 20 juin 2004 à 13:45:13 |
Re : redimensionnement d'une dialogue et déplacement des boutons

cosmobob
|
ok merci mais voila un (petit) probleme voici un bout de mon code : // variables globales int posrelX = 0; int posrelY = 0;
... LRESULT CALLBACK MainDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: { RECT Window; RECT ButPos; GetWindowRect(GetDlgItem(hDlg,IDOK), &ButPos); GetWindowRect(hDlg, &Window); posrelX = Window.right - ButPos.left; posrelY = Window.bottom - ButPos.top; return 1; }
case WM_SIZE: { switch(wParam) { case SIZE_MAXIMIZED:case SIZE_RESTORED: { RECT Window; RECT ButPos; GetWindowRect(GetDlgItem(hDlg,IDOK), &ButPos); int iLongueur = ButPos.right - ButPos.left; int iHauteur = ButPos.bottom - ButPos.top; GetClientRect(hDlg,&Window); MoveWindow(GetDlgItem(hDlg,IDOK), Window.right-posrelX+4, Window.bottom+4-posrelY, iLongueur, iHauteur, TRUE);
break; } } }
|
le probleme est que si je fais un maximiser, puis restaurer, le boutton ne revient pas exactement au meme endroit sauf avec ce que j'ai fait, cad rajouter 4 en abscisse et 4 en ordonnee dans le movewindow (valeurs trouvées empiriquement). pourquoi ya til un décalage?? les valeurs trouvées ds le WM_INITDIALOG sont elles non définitives?
|
|
dimanche 20 juin 2004 à 13:47:13 |
Re : redimensionnement d'une dialogue et déplacement des boutons

cosmobob
|
ha et j'ajoute que la largeur et hauteur du bouton ne sont pas (4,4)...
|
|
dimanche 20 juin 2004 à 13:50:59 |
Re : redimensionnement d'une dialogue et déplacement des boutons

BruNews
|
Sers toi de GetClientRect, calcul inutile dans WM_SIZE car contenu dans lParam.
Une dialogbox doit se prototyper en: BOOL CALLBACK dlgProc au lieu de LRESULT.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
dimanche 20 juin 2004 à 13:57:56 |
Re : redimensionnement d'une dialogue et déplacement des boutons

BruNews
|
Je viens de me souvenir que j'avais deja mis ici: http://www.cppfrance.com/code.aspx?ID=10617
ciao... BruNews, Admin CS, MVP Visual C++
|
|
dimanche 20 juin 2004 à 14:02:06 |
Re : redimensionnement d'une dialogue et déplacement des boutons

cosmobob
|
ok j'ai fait comme t'as dit dans WM_SIZE: case WM_SIZE: { switch(wParam) { case SIZE_MAXIMIZED:case SIZE_RESTORED: { RECT ButPos; GetClientRect(GetDlgItem(hDlg,IDOK), &ButPos); int iLongueur = ButPos.right - ButPos.left; int iHauteur = ButPos.bottom - ButPos.top;
int cx = LOWORD(lParam); int cy = HIWORD(lParam);
MoveWindow(GetDlgItem(hDlg,IDOK),cx-posrelX+4,cy-posrelY+4,iLongueur,iHauteur,TRUE);
break; }
|
maintenant dans WM_INITDIALOG, si je remplace un des GetWindowRect par un GetClientRect, ca me mets le bouton n'importe ou. et ya tjrs le probleme du décalage. d'ou ca peut venir?
|
|
dimanche 20 juin 2004 à 14:04:52 |
Re : redimensionnement d'une dialogue et déplacement des boutons

BruNews
|
Regarde exemple mis plus haut.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
dimanche 20 juin 2004 à 14:08:57 |
Re : redimensionnement d'une dialogue et déplacement des boutons

cosmobob
|
uais je l'ai vu, mais toi c'est pas tout a fait pareil, lors de l'initialisation, tu déplaces les boutons avec ta fonction qui calcule leur position. moi a l'initialisation, je repere le placement relatif du bouton par rapport au bord droit et au bord inférieur du dialogue. et dans le size, je veut les mettre relativement a ces bords du dialogue, avec les valeurs relatives calculées a l'initialisation.
le prob est qu'il y a un petit décalage, et que je ne sais pas d'ou il sort !
|
|
dimanche 20 juin 2004 à 14:22:28 |
Re : redimensionnement d'une dialogue et déplacement des boutons

BruNews
|
WM_INITDIALOG (ou WM_CREATE) sont des events ou la fenetre n'est pas entierement finie, la GDI attend la fin de ton code pour terminer la fenetre. Faut donc pas se fier a certaines valeurs qui par contre seront valables ulterieurement. Fais comme dans mon exemple, sera toujours bon et ne necessite aucun code en plus, suffit d'isoler le code de WM_SIZE dans une func pour l'appeler depuis WM_INITDIALOG.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
Cette discussion est classée dans : bouton, déplacement, boutons, redimensionnement, dialogue
Répondre à ce message
Sujets en rapport avec ce message
Boîte de dialogue à onglet [ par koiki ]
Bonjour,Quelqu'un saurait-il comment "capturer" les messages des boutons Ok et Cancel qui sont générés dynamiquement par la classe CPropertySheet d'un
bouton personnalise [ par MrKribou ]
Comment creer des boutons personnalises (les boutons ok et companie) je veux dire, tout simplement ajouter une image par exemple au bouton. Ya t'il un
Modifier Couleur d'un Bouton et d'une Boite de Dialogue en C++? [ par alanbraxe31 ]
Bonjour tt l'monde!je cherche un script simple ( car je suis débutant en c++) pour modifier la couleur d'une boite de dialogue créée automatiquement,
bouton :-) [ par melaaddali ]
Bjr je programme avec vc++.Je veux savoir comment associer une boite de dialogue à un bouton. cad si j'appuie sur le bouton je veux que la boite de di
Boite de dialogue MFC [ par julok2 ]
Salut,j'écris actuellement un programme dans lequel j'ouvre des boites de dialogue. J'ai donc créé des fonctions OnBouton dans une autre classe où j'u
Insérer bitmap dans un bouton dans une boite de dialogue [ par safira ]
safira:)Salut! Je suis nouvelle dans ce forum! J'aimerais savoir comment mettre un bitmap dans bouton qui se trouve dans une boite de dialogue avec MF
Boutons visibles et invisibles [ par arb ]
BonjourDébutant en C++ (Visual C++ 6.0), j'ai posé 2 boutons sur une form. Je cherche à rendre un bouton invible en cliquant sur l'autre ou a changer
boite de dialogue C [ par benhamid ]
Bonjour, J'ai du mal à faire des boites de dialogue en C.Quelqu'un peut il m'aider svp.Mon problème est le suivant:Je voudrais qu'en executant le pg ç
Probleme C++Builder, gestion de boutons etc. [ par FXL ]
Bonjour a tous, je vous écris car j'ai un projet de licence a réaliser qui consiste a faire une interface graphique, créer un petit logiciel simple et
problème dialogue entre 2 threads [ par sleeper41 ]
Bonjour,Je suis débutant dans la prog windows.J'ai lancé 2 threads qui crééent 2 dialog box.Dans la premiere de ces dialogbox,j'ai un bouton.Dans la s
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|