Создание контекстного меню для win32 API
Я пытаюсь создать контекстное меню для приложения win32 с помощью
case WM_RBUTTONDOWN:
{
HMENU hPopupMenu = CreatePopupMenu();
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, ID_CLOSE, (LPCWSTR)"Exit");
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, ID_EXIT, (LPCWSTR)"Play");
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, 0, 0, 0, hWnd, NULL);
}
но я всегда получаю контекстное меню, как показано ниже
alt текст http://img191.imageshack.us/img191/866/70219076.png
Я хочу, чтобы текст выход и играть для отображения в меню
3 ответов
вы не можете преобразовать строковый литерал в ширину на кастинг, вы должны объявить его как строку типа char. Приведение просто побеждает предупреждение компилятора, оно не изменяет содержимое строки.
изменить это
(LPCWSTR)"Exit"
(LPCWSTR)"Play"
этой
_T("Exit")
_T("Play")
или это
L"Exit"
L"Play"
вы указываете кодировку в определении функции API? Недавно я столкнулся с этой проблемой, и удаление спецификации исправило проблему.
следующие работал для меня
case WM_RBUTTONDOWN:
{
HMENU hPopupMenu = CreatePopupMenu();
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, ID_CLOSE, L"Exit");
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, ID_EXIT, L"Play");
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, 0, 0, 0, hWnd, NULL);
}