Я пытаюсь создать динамическое всплывающее меню в моем приложении, код генерации, который я использую, выглядит примерно так:
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
используется для обеспечения того, чтобы текст был в Unicode, а receivingWindow
- это многоуровневое окно, созданное ранее и работающее хорошо.
При вызове TrackPopupMenuEx
меню отображается с хорошим размером и в правильном положении, но во всплывающем меню текст не отображается. Кто-то понял, почему и как решить эту проблему?
РЕДАКТИРОВАТЬ: больше информации о моем окружении:
- Windows 7 x64
- сборка x86 в Visual Studio 2008
EDIT2: я тестировал то же самое на Windows XP x86, и он работает как чудо, и после дальнейшего тестирования меню хорошо отображается в Windows 7 x64 с классическим видом.