Creer un menu ds richedit

Résolu
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 7 juil. 2007 à 21:16
janjlane Messages postés 1 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 20 janvier 2008 - 20 janv. 2008 à 23:16
Bonjour,
Est-ce que quelqu'un saurait comment ajouter un menu dans une richedit?

10 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 juil. 2007 à 22:56
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).
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 juil. 2007 à 23:47
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);
3
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
8 juil. 2007 à 00:27
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é?
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
8 juil. 2007 à 00:30
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.
3

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

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 juil. 2007 à 21:37
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>
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
7 juil. 2007 à 22:23
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?
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
7 juil. 2007 à 23:27
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;
}
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
8 juil. 2007 à 00:07
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;
}
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
8 juil. 2007 à 00:35
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.
0
janjlane Messages postés 1 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 20 janvier 2008
20 janv. 2008 à 23:16
 woaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaw!!!!!!!!!!!

Janjlane : Salut à tous
0
Rejoignez-nous