[VC++] Accelerator ...comment faire ?

Accelerator ...comment faire ? [VC++] - C++ - Programmation

Marsh Posté le 26-10-2001 à 14:45:43    

voila j'ai ajouté Item IDR_ACCELERATOR dans l'éditeur de ressources, spécifié la touche de racourcis .. et l'ID associé (un IDC_Button dans mon cas).
 
malheureusement cela ne fonctionne pas .. j'ai cherché dans l'aide et j'ai rien capté sur l'utilisation des raccourcis :(
 
ce que je voualais c'est que mon raccorucis appèle ma fonction ::OnButton1 (clic sur le bouton).
 
quelqu'un peut t'il m'expliké ?
merci
 :hello:

Reply

Marsh Posté le 26-10-2001 à 14:45:43   

Reply

Marsh Posté le 26-10-2001 à 15:29:10    

Voir un précédent topic, y a sans doute la "clé"..
 
http://forum.hardware.fr/forum2.ph [...] &owntopic=

Reply

Marsh Posté le 26-10-2001 à 15:36:53    

oui merci, je l'avai trouvé aussi :)
malheureusment 'jai pas tout saisi :( et c'était dans la cas d'un raccorci pour un menu .. moi c'est pour un boutton.
 
 :bounce:

Reply

Marsh Posté le 26-10-2001 à 15:59:58    

Sauf erreur (je suis pas tj bien réveillé), si on met une éperluette (&) dans le label du bouton, ça marche comme avec un menu. Le résultat est un soulignement du caractère qui suit le &. Si on tape ALT + la lettre qui est soulignée dasn le bouton, ça fait comme si on l'avait cliqué.
 
bouton "&Action" donne [s]Action. ALT + A provoque l'action....
Attention à ne pas avoir les mêmes lettres sur deux boutons/contrôles/cases à cocher/.. sinon le "premier" obéit.
 
Les accélérateurs menu permettent de provoquer une action SANS QUE LE MENU ne soit déroulé. CTRL+C copie (si on a prévu de copier dans le code), CTRL+.. fait ce qu'on veut (ou devrait  :D).

Reply

Marsh Posté le 26-10-2001 à 16:03:25    

oui j'ia aussi essayé le truc du "&" mais c pas top car je voudrai avoir une touche qui n'apparaisse pas ! :)
 
je vais continuer a chercher ..

Reply

Marsh Posté le 26-10-2001 à 16:15:11    

Dans ce cas là, faudrait le créer en "soft" par interception du message de frappe de touche du clavier.
Le raccourci menu, on peut le charger dans un accélérateur et c'est Windows qui le gère pour nous, ou on le décode soi-même.
 
WM_KEYDOWN je crois. (C pur, pas ++ (<- y connais rien))
J'avais écrit deux fonctions pour CTRL et MAJ, ça vaut ce que ça vaut mais ça marche (pour moi :D).
 
BOOL CTRL(void)
{
// retourne TRUE si touche CTRL enfoncée
//          FALSE sinon
 
    int   CTRL;
 
    CTRL = GetKeyState(VK_CONTROL); // 1 si rien, -127 ou -128 si enfoncé
 
    return ((CTRL & 128) == 128);
}
// fin module CTRL
 
 
BOOL MAJUS(void)
{
// retourne TRUE si touche MAJUSCULE enfoncée
//          FALSE sinon
 
    int MAJ;
 
    MAJ = GetKeyState(VK_SHIFT); // 1 si rien, -127 ou -128 si enfoncé
 
    return ((MAJ & 128) == 128);
}
// fin module MAJUS
 
J'utilise, après test WM_KEYDOWN
     switch (wParam)
     {
       case 'C': // C : Curseur Outils, + CTRL : Copier sélection
  if (CTRL() == TRUE)
         {
    CommandeMenus(hWndMain, (WPARAM)MNEDIT_CPSL);
  }
         else
    PostMessage(Barre.hWnd, (WM_USER + 6), 0, (long)BTO_CURS);
 
Suffit d'y "télécommander" l'action associée au bouton et ça roule... :)  
 :)          break;

Reply

Marsh Posté le 26-10-2001 à 16:43:36    

merci pr ton aide .. je vais m'y repencher ce soir .. :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed