[WinAPI] szerokość menu kontekstowego

0

Witam
Stworzyłem menu kontekstowe w zasobach i wyświetlam je w następujący sposób:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_RBUTTONUP:
		{		
			mouseXY.x = LOWORD(lParam);
			mouseXY.y = HIWORD(lParam);
			ClientToScreen(hWnd, &mouseXY);
			TrackPopupMenu(hMenuC,TPM_VCENTERALIGN,mouseXY.x,mouseXY.y,0,hWnd,NULL);
		}		
		break;

	return DefWindowProc(hWnd, message, wParam, lParam);

Efekt jest dość dziwny. Główna kolumna ma szerokość równą 1px(praktycznie widać tylko ramkę menu kontekstowego i nie widać elementów), ale już podmenu mają normalną szerokość. Czy czegoś zapomniałem skonfigurować? Menu jest zaprojektowane dobrze:

IDR_MENU2 MENU 
BEGIN
    MENUITEM "pozycja 01",                  ID_POZYCJA01
    POPUP "pozycja 02"
    BEGIN
        MENUITEM "pozycja 02 a",                ID_POZYCJA02_POZYCJA02A
        POPUP "pozycja 02 b"
        BEGIN
            MENUITEM "pozycja 02 ba",               ID_POZYCJA02B_POZYCJA02BA
        END
    END
END

PS. Używam VS 2008

0

TrackPopupMenu wymaga by menu było popupem, czego samo LoadMenu nie zapewnia.
sposób 1:

hMenuC = GetSubMenu(LoadMenu(_hinstance, IDR_MENUGRAPH), 0);
IDR_MENUGRAPH MENU
BEGIN
  POPUP " "
  BEGIN
    // tutaj całe menu kontekstowe; index=0
  END

  POPUP " "
  BEGIN
    // tutaj następne; index=1
  END
END

Zaletą tego jest to, że w jednym menu można umieścić wiele popupów i ładować je po indeksie.

Możesz też użyć CreatePopupMenu i dodać (AppendMenu) do niego menu załadowane z zasobów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1