Avatar billede exp-ralle Nybegynder
15. september 2002 - 19:23 Der er 4 kommentarer og
2 løsninger

2 i en om C++ programmering

Hejsa...

1. Hvordan kan man faa sit simple program:

#include <iostream.h>

int main()
{
cout << "Hej med dig...";
return 0;
}

Til at kunne koere i Windows (altsaa ikke i Dos Promten)?

2. Er Visual C++ saadan en WYSIWYG editor (altså hvor man kan indsætte knapper og tekstbokse og sådan noget direkte på en form, ligesom delphi f.eks.)
Avatar billede soreno Praktikant
16. september 2002 - 07:19 #1
1>
det er mere besværligt da der skal kode til at oprette et vindue og komponenter(andre vinduer..) der skal vises i vinduet.
hvordan havde du forestillet dit at "Hej med dig..." skulle vises på skærmen ?
sådan her:
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL, "Hej med dig...", "Besked fra program:", MB_OK);
  return 0;
}

..eller ?


2>
ja, du kan godt sætte knapper på vinduer i vc++, men der findes mange andre programmer der har ca. samme funktion (wedit er bladt mange - men kun til win32). Det der er afgørende er om du vil benytte mfc eller win32.

mfc er et framework der er bygget op på win32 med det mål at gøre GUI programmeringen nemmere - om det så er nemmere synes jeg afhænger af projektets størrelse :-)
Avatar billede kamikaze Nybegynder
16. september 2002 - 09:16 #2
2>
Du kan godt smide knapper osv. på dialogbox'e uden brug af MFC, men det fungerer ikke på samme måde som Borland C++ Builder eller Visual Basic. Du kan ikke bare dobbeltklikke og så se koden for eventen, men skal selv lave alt det trivielle kode.

Jeg vil ikke kalde MSVC++ for en WYSIWYG editor, selvom der ER en del hjælpeværktøjer...
Avatar billede kamikaze Nybegynder
16. september 2002 - 09:21 #3
1> For at lave et vindue, kan du prøve at bruge nedenstående:

#include <windows.h>

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static char szText[100];
    HDC hdc;
    RECT rect;
    switch(msg)
    {
        case WM_PAINT:
            hdc = GetDC(hwnd);
            strcpy(szText, "Hej med dig!");
            TextOut(hdc, 10, 10, szText, strlen(szText));
            GetClientRect(hwnd, &rect);
            ValidateRect(hwnd, &rect);
            ReleaseDC(hwnd, hdc);
        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, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "The title of my window",
        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);

    while(GetMessage(&Msg, NULL, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
Avatar billede exp-ralle Nybegynder
16. september 2002 - 18:58 #4
kamikaze --> kunne ikke få dit vindue til at virke så gir lige soreno de fleste point.
Avatar billede kamikaze Nybegynder
17. september 2002 - 09:29 #5
Det er nok fordi du har lavet et konsol-projekt. Du skal
1)lave et 'Win32 Applikation' projekt:
File->New->Win32 Application

2)lave en ny source-fil:
File->New->C++ Source File.

Så kan du bare paste ovenstående kode ind i source-filen. Det er lavet i Visual C++ 6.0 og er standard windows-kode så det skal virke...
Avatar billede kamikaze Nybegynder
17. september 2002 - 09:33 #6
Har lige prøvet det, og det virker fint hos mig :o)
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