begin process at 2012 05 30 16:04:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

redimensionnement d'une dialogue et déplacement des boutons


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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++

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales