2010-02-22 3 views
6

tôi đang cố gắng để tạo ra menu ngữ cảnh cho các ứng dụng win32 sử dụngTạo menu ngữ cảnh cho win32 API

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); 
}

Nhưng tôi luôn có được menu ngữ cảnh như hình dưới đây

alt text http://img191.imageshack.us/img191/866/70219076.png

Tôi muốn văn bản thoátphát để được hiển thị trong menu

Trả lời

5

Bạn không thể chuyển đổi một chuỗi chữ để rộng bằng cách đúc, bạn phải khai báo nó như là một chuỗi char rộng. Việc đúc chỉ đánh bại cảnh báo trình biên dịch, nó không thay đổi nội dung của chuỗi.

thay đổi này

(LPCWSTR)"Exit" 
(LPCWSTR)"Play" 

này

_T("Exit") 
_T("Play") 

hay này

L"Exit" 
L"Play" 
1

bạn chỉ định mã hóa trong định nghĩa hàm API? Tôi chạy vào vấn đề đó gần đây và loại bỏ các đặc điểm kỹ thuật cố định vấn đề.

0

Sau đây làm việc cho tôi

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); 
      }