Avatar billede tigertool Nybegynder
11. juni 2004 - 20:49 Der er 7 kommentarer og
1 løsning

GUI med WinAPI

Jeg er nybegynder i C++. Jeg kan kode lidt i en main() metode osv. Jeg står nu og skal bruge en mindre GUI. Jeg har set på http://winprog.org/tutorial/ at man skal bruge WinAPI.

Jeg vil nu høre om der er nogle der kan hjælpe mig lidt - jeg skal bruge en GUI der ser cirka sådan ud: http://tigertool.etanet.dk/gui.png

Er der nogen der kan komme med et kodeeksempel på dette?
Endvidere skal jeg vide hvilken metode jeg skal skrive det i der skal ske når man trykker på knappen - og hvordan jeg får hentet brugerens input også.
Avatar billede tigertool Nybegynder
11. juni 2004 - 20:50 #1
Forresten.. Koden skal kunne afvikles i Borland C++Builder 6
Avatar billede arne_v Ekspert
11. juni 2004 - 20:55 #2
Man kan bruge Win32 API. Eller MFC. Eller et andet GUI lib.

Men indeholder den tutorial ikke alt du skal bruge for at gå i gang ?
Avatar billede tigertool Nybegynder
11. juni 2004 - 20:58 #3
Jeg har kigget meget på den tutorial - men der beskrives ikke noget om inputfelter og hvordan man henter data fra disse.
Avatar billede tigertool Nybegynder
11. juni 2004 - 21:00 #4
En anden ting er at jeg ikke kan få den menubar der bruges i tutorialen til at virke i C++Builder :(
Avatar billede arne_v Ekspert
11. juni 2004 - 21:03 #5
Der er da et afsnit om kontroller:
http://winprog.org/tutorial/controls.html
Avatar billede tigertool Nybegynder
12. juni 2004 - 00:09 #6
Så.. nu har jeg gjort et forsøg - men det ser ikke ud som om at den Edit kommer frem på skærmen - hvor kan min fejl ligge:

<code>
#include <windows.h>
#define IDC_TEXT                        1000
const char g_szClassName[] = "Mit GUI Program";

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

    switch(msg)
    {
        case WM_INITDIALOG:
        SetDlgItemText(hwnd, IDC_TEXT, "");

        break;
        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{

    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style        = 0;
    wc.lpfnWndProc  = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance    = hInstance;
    wc.hIcon        = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor      = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm      = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Kunne ikke skabe vinduet", "Fejl",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "Mit GUI Program",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 400, 240,
        NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Kunne ikke skabe vinduet", "Fejl",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
</code>
Avatar billede bertelbrander Novice
12. juni 2004 - 00:52 #7
Det er vist lettere at lave det som en dialog box, se her hvordan:
http://home20.inet.tele.dk/midgaard/ng38.zip
Avatar billede tigertool Nybegynder
19. juni 2004 - 22:58 #8
Jeg løste problemet ved at købe en bog. Bogen hedder "C++Builder 6 Developers Guide" Virkelig en god bog.. Dog ikke velegnet til nybegynder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester