Creer un menu ds richedit [Résolu]

Signaler
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
-
Messages postés
1
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
20 janvier 2008
-
Bonjour,
Est-ce que quelqu'un saurait comment ajouter un menu dans une richedit?

10 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Quand la fenetre recoit ce message c'est que l'utilisateur a fait un
clic droit dans le richedit, c'est donc a ce moment la que tu dois
afficher ton menu avec TrackPopupMenu (menu que tu as créé
préalablement avec
CreatePopupMenu par exemple).

Ensuite pour récuperer l'id de l'item choisi par l'utilisateur, ca
depend comment tu appeles TrackPopupMenu (si tu lui passe le flag TPM_RETURNCMD ou pas, voir msdn).
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Ben deja ta fonction ne sert a rien puisqu'elle retourne pas ton HMENU.

Par exemple pour ajouter 1 item:


MENUITEMINFO mnuInfo;

mnuInfo.cbSize = sizeof(MENUITEMINFO);

mnuInfo.fMask = MIIM_STRING;

mnuInfo.dwTypeData = "couper";

InsertMenuItem(hSubMenu, 0, 1, &mnuInfo);


Mais il faudrait aussi associer un ID a ton menu-item pour pouvoir
recuperer quel item a été choisi par ton utilisateur, et donc:


MENUITEMINFO mnuInfo;


mnuInfo.cbSize = sizeof(MENUITEMINFO);


mnuInfo.fMask = MIIM_STRING | MIIM_ID;


mnuInfo.wID = 0x1234;


mnuInfo.dwTypeData = "couper";


InsertMenuItem(hSubMenu, 0, 1, &mnuInfo);
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
C bon j'ai trouver :D
J'ai juste remplacer:
InsertMenuItem(hSubMenu, 0, 1, mnuInfo);
InsertMenuItem(*hSubMenu, 0, 1, mnuInfo);

Comment associer une action au menu clické?
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

J'ai l'impression que tu n'es pas très copain avec msdn, non ?

Regarde la page de TrackMenuPopup, et plus précisement le flags TPM_RETURNCMD.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Tu peux afficher ton menu lorsque la fenêtre parente du richedit recoit le message WM_CONTEXTMENU.<link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="winnotify" proj="WinUIHXS" name="WM_CONTEXTMENU" pubpath="/WinUI/WindowsUserInterface/Resources/Menus/MenuReference/MenuMessages/WM_CONTEXTMENU.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_WM_CONTEXTMENU"></mshelp:keyword><mshelp:keyword index="A" term="_win32_WM_CONTEXTMENU_cpp"></mshelp:keyword><mshelp:toctitle title="WM_CONTEXTMENU Notification"></mshelp:toctitle><mshelp:rltitle title="WM_CONTEXTMENU Notification ()"></mshelp:rltitle><mshelp:keyword index="F" term="WM_CONTEXTMENU"></mshelp:keyword><mshelp:keyword index="K" term="WM_CONTEXTMENU"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="WinUI"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbWinUI"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="WM_CONTEXTMENU"></mshelp:attr><mshelp:attr name="APIType" value="NA"></mshelp:attr><mshelp:attr name="TopicType" value="winnotify"></mshelp:attr></xml>
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Je ne comprend pa vraiment, quand la fenetre parante recoit le message WM_CONTEXTMENU c'est pour gerer les clics sur le menu?
Mais alors comment creer et afficher le menu couper/copier/coller?
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
J'ai commencé un peu, j'ai un peu de mal a remplir la structure MENUITEMINFO, est-ce que je suis sur la bonne voie ou alors c'est pas du tout comme ca?

int CreateSubMenu(void)
{
MENUITEMINFO mnuInfo;
mnuInfo.cbSize = sizeof(MENUITEMINFO);
mnuInfo.fMask = MIIM_SUBMENU;
HMENU hSubMenu = CreatePopupMenu();
if(!hSubMenu) return 1;
mnuInfo.hSubMenu = hSubMenu;
mnuInfo.fType = MFT_STRING;
char sMenu[] = "Couper";
mnuInfo.cch = strlen(sMenu) + 1
mnuInfo.dwTypeData = sMenu;
if(!InsertMenuItem(hSubMenu, 0, 1, mnuInfo)) return 1;

return 0;
}
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Je patauge vraiment la tu n'aurais pa un petit exemple?
Pour l'instant j'ai fait ca mais ca ne marche pas :(
HMENU hRTFMenu;
MENUITEMINFO RTFmnuInfo;

case WM_INITDIALOG:
//...
hRTFMenu = CreatePopupMenu();
CreateSubMenu(&hRTFMenu, &RTFmnuInfo);
return 1;

case WM_CONTEXTMENU:
TrackPopupMenu(hRTFMenu, TPM_RETURNCMD, 20, 40, 0, hwnd, 0);
return 0;

int CreateSubMenu(HMENU* hSubMenu, MENUITEMINFO* mnuInfo)
{
mnuInfo->hSubMenu = hSubMenu;
mnuInfo->cbSize = sizeof(MENUITEMINFO);
mnuInfo->fMask = MIIM_STRING | MIIM_ID;
mnuInfo->wID = 0x1234;
mnuInfo->dwTypeData = "Couper";
InsertMenuItem(hSubMenu, 0, 1, mnuInfo);
return 0;
}
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
C'est pas que j'aime pas msdn mais deja a la base j'ai pas de tres bonnes notes en anglais en plus des fois je trouve ca pas tres bien expliqué, mais bon maintenant que j'ai compris un peu le fonctionnement, je devrais reussir a me debrouiller avec TrackMenuPopup,
merci de ton aide.
Messages postés
1
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
20 janvier 2008

 woaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaw!!!!!!!!!!!

Janjlane : Salut à tous