Comment modifier les boites de dialogue standards?
2 réponses
Michael
Bonjour à tous,
j'ai déjà vu dans quelques logiciels des boites de dialogue (Ouvrir,
Enregistrer...) standards, mais sur lesquelles avaient été ajoutées des
élèments supplémentaires, comme des checkboxes, etc...
Pour faire cela, est-ce que je dois recréer de toutes pièces une boite de
dialogue semblable, ou bien est-ce que je peux intercepter le handle et la
trafiquer dans le code?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
Michael wrote:
j'ai déjà vu dans quelques logiciels des boites de dialogue (Ouvrir, Enregistrer...) standards, mais sur lesquelles avaient été ajoutées des élèments supplémentaires, comme des checkboxes, etc...
OFN_ENABLETEMPLATE | OFN_ENABLEHOOK
Michael wrote:
j'ai déjà vu dans quelques logiciels des boites de dialogue (Ouvrir,
Enregistrer...) standards, mais sur lesquelles avaient été ajoutées des
élèments supplémentaires, comme des checkboxes, etc...
j'ai déjà vu dans quelques logiciels des boites de dialogue (Ouvrir, Enregistrer...) standards, mais sur lesquelles avaient été ajoutées des élèments supplémentaires, comme des checkboxes, etc...
OFN_ENABLETEMPLATE | OFN_ENABLEHOOK
Michael
J'ai le fichier RC suivant, qui me permet d'ajouter un checkbox à la boite de dialogue standard "Enregistrer"
MYDIALOG DIALOG 0, 0, 200, 40 STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL FONT 8, "MS Sans Serif" BEGIN CONTROL "Offset audio to maintain a/v sync", 1000 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5, 15, 180, 5 END
J'ai la classe suivante qui me permet de gérer cette modification:
class TExSaveDialog : public TSaveDialog { public: __fastcall TExSaveDialog(TComponent *Owner): TSaveDialog(Owner) { Template = "MYDIALOG"; }
TExSaveDialog *Dialog = new TExSaveDialog(this); if (Dialog->Execute()) { //Récupération de l'état du checkbox switch (IsDlgButtonChecked(Dialog->Handle,1000)) { case BST_CHECKED: ShowMessage("checked"); break; case BST_INDETERMINATE: ShowMessage("indeterminate"); break; case BST_UNCHECKED: ShowMessage("unchecked"); break; }
} delete Dialog;
Le souci est qu'il m'indique tout le temps Unchecked...
Quel est le souci?
J'ai le fichier RC suivant, qui me permet d'ajouter un checkbox à la
boite de dialogue standard "Enregistrer"
MYDIALOG DIALOG 0, 0, 200, 40
STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Offset audio to maintain a/v sync", 1000
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5, 15, 180, 5
END
J'ai la classe suivante qui me permet de gérer cette modification:
class TExSaveDialog : public TSaveDialog
{
public:
__fastcall TExSaveDialog(TComponent *Owner): TSaveDialog(Owner)
{ Template = "MYDIALOG"; }
TExSaveDialog *Dialog = new TExSaveDialog(this);
if (Dialog->Execute())
{
//Récupération de l'état du checkbox
switch (IsDlgButtonChecked(Dialog->Handle,1000))
{
case BST_CHECKED:
ShowMessage("checked");
break;
case BST_INDETERMINATE:
ShowMessage("indeterminate");
break;
case BST_UNCHECKED:
ShowMessage("unchecked");
break;
}
}
delete Dialog;
Le souci est qu'il m'indique tout le temps Unchecked...
TExSaveDialog *Dialog = new TExSaveDialog(this); if (Dialog->Execute()) { //Récupération de l'état du checkbox switch (IsDlgButtonChecked(Dialog->Handle,1000)) { case BST_CHECKED: ShowMessage("checked"); break; case BST_INDETERMINATE: ShowMessage("indeterminate"); break; case BST_UNCHECKED: ShowMessage("unchecked"); break; }
} delete Dialog;
Le souci est qu'il m'indique tout le temps Unchecked...