Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Personaliser le dialog d'ouverture et d'enregitrement

3 réponses
Avatar
Kira
Bonjour,

J'aimerais ajouter un menu contextuel à une boîte de dialogue
d'ouverture/enregistrement (GetOpenFileName) lorsqu'un utilisateur éxecute
une une combinaision de touches (hotkey).

La difficulté étant que ceci ne doit pas marcher uniquement pour mon
application, mais dans toutes.

En gros, j'aimerais faire la même chose que ce soft là :
http://www.shelltoys.com/access_folders/index.html

Pourriez-vous s'il vous plaît me décrire la marche à suivre ?

Merci d'avance.

Kira

3 réponses

Avatar
Chistian ASTOR
Kira a écrit:

J'aimerais ajouter un menu contextuel à une boîte de dialogue
d'ouverture/enregistrement (GetOpenFileName) lorsqu'un utilisateur éxecute
une une combinaision de touches (hotkey).

La difficulté étant que ceci ne doit pas marcher uniquement pour mon
application, mais dans toutes.

En gros, j'aimerais faire la même chose que ce soft là :
http://www.shelltoys.com/access_folders/index.html



Il n'y a pas de difficulté, puisqu'une Hot Key est globale.
RegisterHotKey()-WM_HOTKEY-...TrackPopupMenu()... + envoi commandes à la
Dlg courante.
(et l'appli utlise bien sûr WH_MOUSE pour le click droit)
Avatar
Kira
Chistian ASTOR wrote in
news:3ffff890$0$6967$:

Il n'y a pas de difficulté, puisqu'une Hot Key est globale.
RegisterHotKey()-WM_HOTKEY-...TrackPopupMenu()... + envoi commandes à
la Dlg courante.
(et l'appli utlise bien sûr WH_MOUSE pour le click droit)



Merci pour ta réponse.
Effectivement, mais comment puis-je savoir que l'utilisateur a invoqué la
hotkey sur une fenêtre d'ouverture/enregistrement de fichiers (si la hotkey
est invoquée ailleurs, le menu doit avoir un autre comportement - à savoir,
simplement ouvrir le dossier dans l'explorateur, au lieu de changer le
dossier actif dans le dialogue d'ouverture/enregistrement).

Comment donc savoir si la fenêtre active est une fenêtre créee par
GetOpen/SaveFileName ? Je n'ai trouvé aucun critère qui pourrait me
permettre de l'identifier par rapport à une fenêtre classique, avec Spy++.

Merci d'avance.
Avatar
Chistian ASTOR
Kira a écrit:

Comment donc savoir si la fenêtre active est une fenêtre créee par
GetOpen/SaveFileName ? Je n'ai trouvé aucun critère qui pourrait me
permettre de l'identifier par rapport à une fenêtre classique, avec Spy++.



Les ID des child controls sont en principe constants.

SHELLDLL_DefView = 0x0461 pour Explorer-style
Listbox = 0x0460 (lst1) pour old-style
etc...
(pas testé sur 2000-XP)
A part pour les Dlg Office ("bosa_sdm_Microsoft Word x.0", où l'appli
citée bugge un peu).