Modification du menu Système

Xaviou - 26 sept. 2001 à 22:13
 Xaviou - 7 oct. 2001 à 22:35
Salut.

Je voudrais ajouter une command "About ..." au menu système de mon prog.

J'ai donc écris le code suivant:

HMENU hSysMenu;
MENUITEMINFO minfo;

minfo.cbSize=sizeof(minfo);
minfo.cch=10;
minfo.dwItemData=IDM_ABOUT;
minfo.dwTypeData="&About ...\0";
minfo.fMask=MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_DATA;
minfo.fState=MFS_ENABLED;
minfo.fType=MFT_STRING;
minfo.hbmpChecked=NULL;
minfo.hbmpUnchecked=NULL;
minfo.hSubMenu=NULL;
minfo.wID=IDM_ABOUT;
InsertMenuItem(hSysMenu,SC_CLOSE,MF_BYPOSITION,&minfo);

Jusque là, tout va bien, la commande est bien ajoutée à la fin du menu système.
Le problème est que je n'arrive pas à récupérer le message correspondant à IDM_ABOUT

Merci d'avance à ceux qui auraient la combine nécessaire, et qui auraient l'amabilité de ma la fournir...

@+

Xaviou

5 réponses

Euh le message à intercepter c'est 'WM_COMMAND'.
Donc ca te donne:

case WM_COMMAND:
{
if (HIWORD(wParam)==0 && LOWORD(wParam)==IDM_ABOUT)
{
// ...
}
break;
}
0
J'ai déjà essayé, mais je ne reçois pas le message WM_COMMAND. Voilà ce que j'avais mis:
(J'ai même essayé de mettre un MessageBox avant de tester wParam, mais je n'ai jamais vu le message...)

case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDM_ABOUT:
MessageBox(hWndMain,"Ca marche !...","About",MB_OK);
return 0;
}
}
0
Tu peux me montrer l'ensemble de la source ? (a moins que ce soit trop long ou confidentiel)
0
J'ai trouvé: c'est le message WM_SYSCOMMAND qu'il faut intercepter
0

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

Posez votre question
Tip Top Kodak, ça marche !...
Il faut intercepter WM_SYSCOMMAND, puis vérifier que LOWORD(wParam) soit égal à IDM_ABOUT ...

Pour ce qui est du code, il n'a rien d'exeptionnel (simple application Win32).

Par contre, dès que j'aurais le temps, je mettrais un exemple sur le site.

@+, et merci beaucoup.

Xaviou
0
Rejoignez-nous