Je suis en train de créer un menu contextuel dynamique au sein de mon application, est quelque chose comme le code de génération J'utilise que:vide Menu Popup Win32
HMENU menu;
POINT pt;
menu = CreatePopupMenu();
SetForegroundWindow(receivingWindow);
GetCursorPos(&pt);
int i = 19;
AppendMenu(menu, MF_STRING, i++, _TEXT("meh meh"));
AppendMenu(menu, MF_STRING, i++, _TEXT("testo"));
AppendMenu(menu, MF_STRING, i++, _TEXT("foobar foobar"));
TrackPopupMenuEx(menu
, 0
, pt.x, pt.y
, receivingWindow
, NULL);
DestroyMenu(menu);
_TEXT
est utilisé pour assurer le texte est en Unicode et receivingWindow
est une fenêtre en couches créée avant et fonctionnant bien.
Lorsque vous appelez TrackPopupMenuEx
le menu est affiché avec la bonne taille et à la bonne position, mais absolument aucun texte n'apparaît dans le menu contextuel. Est-ce que quelqu'un a eu une idée pourquoi, et comment résoudre ce problème?
EDIT: plus d'informations sur mon environnement:
- Windows 7 x64 x86
- construire dans Visual Studio 2008
EDIT2: Je l'ai testé le même sous Windows XP x86, et cela fonctionne comme un charme, et après un autre test, le menu est bien affiché dans Windows 7 x64 avec le look classique.
Vous ne définissez aucune valeur dans le paramètre fuFlags de TrackPopupMenuEx(). Essayez de spécifier des options d'alignement et de souris. Cela pourrait l'aider à mieux décider comment se comporter. –
Même avec fuFlags, aucun texte affiché. –