J'ai quelques boutons poussoirs uniques et je veux seulement en montrer un à la fois. Je veux qu'ils soient centrés, donc j'ai le premier bouton-poussoir centré sur le dialogue. Si je veux montrer le 3ème bouton, je veux lui donner les coordonnées des premiers boutons et cacher le 1er bouton.Comment puis-je copier les coordonnées d'une boîte de dialogue dans une autre boîte de dialogue?
Comment puis-je copier des coordonnées de boutons et définir d'autres coordonnées de boutons pour les valeurs copiées?
Ex. Disons que je ...
PB_ONE
PB_TWO
Comment puis-je saisir les coordonnées de PB_ONE et de définir les coordonnées de PB_TWO à PB_ONE?
RECT rcButton;
GetWindowRect(GetDlgItem(hDlg, PB_ONE), &rcButton);
Le code ci-dessus saisit l'élément de la boîte de dialogue dont je souhaite copier les coordonnées. Y at-il une commande simple qui définit un autre bouton de dialogue pour les coordonnées de ce dialogue?
quelque chose comme SetDlgItem()?
MISE À JOUR AVEC LE NOUVEAU CODE I Tried BASÉ la réponse
GetWindowRect(GetDlgItem(hDlg, PB_ONE), &rcButton);
ClientToScreen(hDlg, &p);
OffsetRect(&rcButton, -p.x, -p.y);
SetWindowPos(GetDlgItem(hDlg, PB_TWO), 0, rcButton.left, rcButton.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
ShowWindow(GetDlgItem(hDlg, PB_TWO), SW_SHOW);
doivent remplacer en cours rcButton.left et rcButton.top avec px et une valeur difficile pour rcButton.top pour obtenir le bouton pour positionner sur l'écran de dialogue.
Ceci renvoie une erreur dans SetWindowPos où le paramètre 3 ne peut pas convertir un LONG * en INT.
Assurez-vous que 'p.x = 0; p.y = 0; 'avant d'appeler' ClientToScreen'. Cacher également 'PB_ONE'. Vous avez dit que vous avez déjà changé '& rcButton.left' en' rcButton.left'? –
Oui, je les ai changés. Cependant, ces coordonnées sont toujours hors de l'écran. Je dois utiliser px au lieu de rcButton.left pour obtenir les bonnes positions de boutons – user3622460