[VC++]Ressources

Résolu
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 8 déc. 2005 à 18:08
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 9 déc. 2005 à 18:58
Bonjour,

j'ai un petit probleme sur l'utilisation de Visual Studio 2003, j'essai de faire des racourcis clavier pour mon bloc notes que j'ai crée, j'ai vu que qu'en faisan une ressource accelerator on peut faire nos racourcis rapidement, cependant je lui met donc IDM_NEW en ID, puis CTRL et N dans les 2eme et 3eme colonnes et enfin VIRTKEY , cependant il compile bien mais aucun racourcis n'est fait :s, j'ai vu sur le tuto de developpez.com qu'il mettent les #define IDM_NEW par exemple dans resource.h, cela a t'il une importance, deplus si je les met la dedans et que je l'inclus dans mon prog.cpp il met une erreur en disant que le fichier retouche a été modifié en dehors de visual c++, bref comment faire ...

Merci d'avance de mettre une petite explication ou un lien pour expliquer l'utilisation des ressources...

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 déc. 2005 à 09:10
Il faut charcher le racourcis par :

LoadAccelerators(hinstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));

Dans ton cas ça renvoi nul (il faut caster l'entier en chaîne-> macro MAKEINTRESOURCE et pas passer une chaine avec l'Id en fait).
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 déc. 2005 à 18:41
Ne pas oublier de charger la table des racoucis par LoadAccelerator et de rajouter TranslateAccelerator dans la boucle des messages.

Normalement tu n'as pas à modifier le resource.h et le .rc à la main (visual le fait très bien de rajouter les ID des contrôles).

Il faut par contre inclure resource.h dans ton source.

Ensuite dans ta WndProc, tu traites WM_COMMAND et le wParam sera l'Id de ton menu ou raccouris.
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
8 déc. 2005 à 18:54
C'est bien ce que j'ai fait pourtant

//debut de mon prog.cpp

#include <windows.h>
#include <stdio.h>
#include "resource.h"

#define IDM_QUIT 1
#define IDM_NEW 2
#define IDM_OPEN 3
#define IDM_SAVEAS 4
#define IDM_COPYRIGHT 5
#define IDM_COPY 6
#define IDM_CUT 7
#define IDM_PASTE 8
#define IDM_PRINT 9
#define IDM_DEL 10
#define IDM_UNDO 11
#define IDM_MAIL 12
#define IDM_VERSION 13
#define IDM_SETFONT 14
#define IDM_DATE 15
#define IDM_TIME 16
#define IDM_QUIT 17

//le load accelerator
HACCEL haccel;
haccel = LoadAccelerators(hinstance, "IDR_ACCELERATOR1");

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(hwnd, haccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

//contenue du resource.h
//{{NO_DEPENDENCIES}}

// Microsoft Visual C++ generated include file.

// Used by resource.rc

//

#define IDR_ACCELERATOR1 101

#define IDM_NEW 40001
...
.

et de plus il me dis Macro redefinition car dans resource.h j'ai un #define IDM_NEW en + qu'il me crée lui :s et si je fais ctrl + N il ne va pas la ou je veux :s pourtant pas d'erreur dans le compilo a part le macro redefinition (qui est un warning)

//un peu du case WM_COMMAND:

//////////////////////
//////Fonction NEW
if(LOWORD(wParam) == IDM_NEW)
{
//si fenetre d'édition déja modifiée prevenir if(HIWORD(wParam) EN_CHANGE) EditNotChg FALSE;
if(EditNotChg ||
MessageBox(hwnd,"Le texte a été modifié.\r\nEtes vous sûr de vouloir supprimer\r\nce que vous avez déja crée?","Nouveau",MB_YESNO | MB_ICONEXCLAMATION) != IDYES)
{
return 0;
}
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 déc. 2005 à 19:50
il faut ne pas redéfinir les Ids de menu (et autre ressources) dans le source, il faut utiliser ceux de resource.h
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
8 déc. 2005 à 20:13
ouai mais meme si je les enlevent dans mon prog.cpp et que j'utilise ceux de resource.h cela ne change rien :s cela compile mais ne passe pas le racourcis :s

.
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
9 déc. 2005 à 18:58
ok merci
0
Rejoignez-nous