Menu w pustym oknie programu - Problem


(Croos22) #1

Witam.

Nie dawano zacząłem przygodę z winapi i mam kłopot z wstawieniem menu pod paskiem tytułowym okna.

Robiłem to tak:

kod pustego okna

#include 


/* Declare Windows procedure */

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);


/* Make the class name into a global variable */

char szClassName[] = "WindowsApp";


int WINAPI WinMain (HINSTANCE hThisInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpszArgument,

                    int nFunsterStil)


{

    HWND hwnd; /* This is the handle for our window */

    MSG messages; /* Here messages to the application are saved */

    WNDCLASSEX wincl; /* Data structure for the windowclass */


    /* The Window structure */

    wincl.hInstance = hThisInstance;

    wincl.lpszClassName = szClassName;

    wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */

    wincl.style = CS_DBLCLKS; /* Catch double-clicks */

    wincl.cbSize = sizeof (WNDCLASSEX);


    /* Use default icon and mouse-pointer */

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

    wincl.lpszMenuName = NULL; /* No menu */

    wincl.cbClsExtra = 0; /* No extra bytes after the window class */

    wincl.cbWndExtra = 0; /* structure or the window instance */

    /* Use Windows's default color as the background of the window */

    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;


    /* Register the window class, and if it fails quit the program */

    if (!RegisterClassEx (&wincl))

        return 0;


    /* The class is registered, let's create the program*/

    hwnd = CreateWindowEx (

           0, /* Extended possibilites for variation */

           szClassName, /* Classname */

           "Windows App", /* Title Text */

           WS_OVERLAPPEDWINDOW, /* default window */

           CW_USEDEFAULT, /* Windows decides the position */

           CW_USEDEFAULT, /* where the window ends up on the screen */

           544, /* The programs width */

           375, /* and height in pixels */

           HWND_DESKTOP, /* The window is a child-window to desktop */

           NULL, /* No menu */

           hThisInstance, /* Program Instance handler */

           NULL /* No Window Creation data */

           );


    /* Make the window visible on the screen */

    ShowWindow (hwnd, nFunsterStil);


    /* Run the message loop. It will run until GetMessage() returns 0 */

    while (GetMessage (&messages, NULL, 0, 0))

    {

        /* Translate virtual-key messages into character messages */

        TranslateMessage(&messages);

        /* Send message to WindowProcedure */

        DispatchMessage(&messages);

    }


    /* The program return-value is 0 - The value that PostQuitMessage() gave */

    return messages.wParam;

}



/* This function is called by the Windows function DispatchMessage() */


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message) /* handle the messages */

    {

        case WM_DESTROY:

            PostQuitMessage (0); /* send a WM_QUIT to the message queue */

            break;

        default: /* for messages that we don't deal with */

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

    }


    return 0;

}

A tu menu wstawione poprzez plik zasobów:

200 MENU

{

 POPUP "&Plik"

 {

  MENUITEM "&Nowy", 100

  MENUITEM "&Otwórz", 101

  MENUITEM "&Zapisz", 102

  MENUITEM SEPARATOR

  POPUP "&Importuj"

  {

   MENUITEM "&Tekst", 103

   POPUP "O&braz"

   {

    MENUITEM "Bit&mapa", 104

    MENUITEM "&JPEG", 105

   }

  }

  MENUITEM SEPARATOR

  MENUITEM "&Koniec", 106

 }

 MENUITEM "&Edycja", 108

}

Jak mam przypisać menu w pierwszym kodzie a dokładnie w którym miejscu?Z góry dziękuje za pomoc.


(Monczkin) #2

swexed , nazwij proszę temat konkretnie, bez zbędnych problemów w tytule. Kody proszę umieścić na serwerze hostującym. Inaczej wyciągnę konsekwencje. Przeczytaj ten temat. http://forum.dobreprogramy.pl/viewtopic.php?f=16&t=394978