HWND CreatePopupmenu()



  • Hallo!
    Wie weise ich meinem neuen mit HWND CreatePopupMenu(VOID) erstellten Popup-Menü ein Handle zu. Bei MSDN heißt es, wenn die o.g. Funktion erfolgreich ist, wird das Handle von dieser returnt. Das verstehe ich nicht ganz. Könnte mir das jemand erklären/Syntax posten?



  • CreatePopupMenu(); hab ich jetzt selbst geschafft. Nun frage ich mich wo ich TrackPopupMenuEx(hmenu,TPM_CENTERALIGN,10,10,hwnd,NULL); unterbringe...
    Das kleine Programm:
    #include <windows.h>
    #include <winuser.h>

    LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
    HDC hdc;
    RECT rect;
    HMENU hmenu;
    const char sztext[] = "TestTestTestTestTestTest";

    switch(message)
    {
    case WM_CREATE:{
    {HMENU CreatePopupMenu(hmenu);}
    }
    case WM_MOVE:
    {
    hdc = GetDC(hwnd);
    GetClientRect(hwnd, &rect);
    TextOut(hdc, rect.right/2 -85, rect.bottom/2 -10,
    sztext, strlen(sztext));
    ReleaseDC(hwnd, hdc);

    return(0);
    }break;
    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return(0);
    }break;
    default:break;
    }
    return(DefWindowProc(hwnd, message, wparam, lparam));

    }

    int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprevinst,
    LPSTR lpcmdline, int ncmdshow)
    {
    WNDCLASSEX winclass;
    HWND hwnd;
    MSG message;
    const char szclassname[] = "klasse1";

    winclass.cbSize = sizeof(WNDCLASSEX);
    winclass.style = CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc = WindowProc;
    winclass.cbClsExtra = 0;
    winclass.cbWndExtra = 0;
    winclass.hInstance = hinst;
    winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    winclass.lpszMenuName = NULL;
    winclass.lpszClassName = szclassname;
    winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    if(!RegisterClassEx(&winclass))
    { return 0; }
    if(!(hwnd = CreateWindowEx(NULL,
    szclassname,
    "TestTestTest",
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    300,300,
    400,300,
    NULL,
    NULL,
    hinst,
    NULL)))
    {
    return 0;
    }
    ShowWindow(hwnd, ncmdshow);
    UpdateWindow(hwnd);

    while(GetMessage(&message,NULL,0,0)==TRUE)
    {
    if(message.message == WM_QUIT)
    {
    break; }
    TranslateMessage(&message);
    DispatchMessage(&message);
    }

    return message.wParam;
    }


Anmelden zum Antworten