2017-10-14 5 views
0

J'ai créé une fenêtre sans barre de titre et j'essaie d'ajouter un menu mais il apparaît au-dessus de ma fenêtre. Ceci est ma création de fenêtre:Ouvrir un menu à partir d'un clic sur statique (C++)

WNDCLASS wc = { 0 }; 
    wc.lpfnWndProc = SProc; 
    wc.hInstance = hInst; 
    wc.lpszClassName = "test"; 
    wc.hbrBackground = NULL; 
    wc.style = CS_DROPSHADOW; 
    wc.hCursor = carrow; 
    if (!RegisterClass(&wc)) 
     return 1; 

    HWnd = CreateWindow(wc.lpszClassName, 
     "Compta", 
     WS_POPUP|WS_VISIBLE|WS_CLIPCHILDREN, 
     10, 10, 1000, 800, 0, 0, hInst, NULL); 

Et le menu:

HMENU hMenubar; 
HMENU hMenu; 

hMenubar = CreateMenu(); 
hMenu = CreateMenu(); 

AppendMenuW(hMenu, MF_STRING, 1111, L"&New"); 
AppendMenuW(hMenu, MF_STRING, 1112, L"&Open"); 
AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL); 
AppendMenuW(hMenu, MF_STRING, 1113, L"&Quit"); 

AppendMenuW(hMenubar, MF_POPUP, (UINT_PTR) hMenu, L"&File"); 
SetMenu(hwnd, hMenubar); 

Le mieux serait de ne pas avoir la barre de menu (comme je veux que mon propre fond intacte) et je voudrais créer un statique un texte simple, et sur clic, le menu apparaît juste en dessous du texte. Est-ce possible ou dois-je créer mon propre menu personnalisé avec un autre enfant? Merci

+0

Utilisez un [menu contextuel] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms648003 (v = vs.85) .aspx). –

+0

Bien sûr, merci. – Entretoize

Répondre

0

Correction de mon code et d'une solution à ma question:

HMENU hMenu; 

hMenu = CreatePopupMenu(); 

AppendMenuW(hMenu, MF_STRING, 1111, L"&New"); 
AppendMenuW(hMenu, MF_STRING, 1112, L"&Open"); 
AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL); 
AppendMenuW(hMenu, MF_STRING, 1113, L"&Quit"); 

TrackPopupMenuEx(hMenu,TPM_LEFTALIGN|TPM_TOPALIGN,100,18,hwnd,0);