Avatar billede rasmuslarsen2 Nybegynder
03. juni 2005 - 13:21 Der er 2 kommentarer og
1 løsning

Ingen DOS-promt

Hej. Jeg er lige begyndt på C++ igen, og selvom jeg godt ved det er for svært i starten, vil jeg gerne lige vide lidt om programer med GUI i C++. Jeg har fundet dette stykke kode, og den laver da også sådan et lille vindue, men hvordan kan jeg gøre så der ikke kommer sådan en DOS-promt op bag ved?

#include <windows.h>

const char g_szClassName[] = "myWindowClass";

// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        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;

    //Step 1: Registering the Window Class
    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, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    // Step 2: Creating the Window
    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "Test",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
        NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

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

    // Step 3: The Message Loop
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}


Jeg vil gerne have at det vindue er det eneste der kommer frem, ingen DOS-promt.


Rasmus Larsen
Avatar billede arne_v Ekspert
03. juni 2005 - 14:17 #1
hvsi du compiler/linker den som windows applikation og ikke som console
applikation så får du ikke noget sort DOS vindue
Avatar billede arne_v Ekspert
23. juni 2005 - 20:31 #2
OK ?
Avatar billede rasmuslarsen2 Nybegynder
25. juni 2005 - 16:52 #3
Tak, og undskyld den lange ventetid, jeg havde desværre glemt dette spørgsmål :/
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



Seneste spørgsmål Seneste aktivitet
I dag 15:08 Http client med X509Certificate2 Af joki i C#
I dag 13:02 Hjemmenetværk Af Andfer i LAN/WAN
I dag 11:17 Chrombook Af lurup i Andre styresystemer
I går 15:20 Core i5-7200 processor Af Wombat i Windows
I går 15:07 Hjælp med HTML og CSS Af Nojsa i HTML