Avatar billede visbyrocker Nybegynder
20. juli 2002 - 16:21 Der er 7 kommentarer og
1 løsning

Lave et vindue, og fylde det med indhold?

Jeg er newbee i C++, og har blot afsluttet en tynd bog om lidt programmering i DOS.
Nu kunne jeg tænke mig lidt action, så det kunne være skægt at fremstille et vindue i Windows.
Jeg har fundet tusind forskellige koder på nettet, der påstår at klare arbejdet, men hvis jeg compiler en af disse, klager compileren over at der mangler "_main".
Og det gør der skam også!

Spørgsmålet lyder så:
Hvordan laver jeg et vindue, OG fylder noget indhold i det?

På forhånd mange tak.
Avatar billede hermandsen Juniormester
20. juli 2002 - 16:26 #1
Er det REN C++, eller Visual C++, eller Builder eller hvad er det?

Du kan hente C++ Builder på www.borland.com
Avatar billede visbyrocker Nybegynder
20. juli 2002 - 16:36 #2
Det er ren C++.

Er det en meget krævende opgave?
Avatar billede hermandsen Juniormester
20. juli 2002 - 16:50 #3
Hmmm... Ikke at det ikke kan lade sig gøre, men ja! :)

Jeg så en gang en tutorial til at lave et vindue i Windows... Det var ren assembler-kode så det kan sagtens lade sig gøre! ;)

Hvis jeg var dig tror jeg at jeg ville skaffe mig en RAD (rapid application development)-app til udvikling... Det er lidt sjovere i længden! ;)
Avatar billede nico26 Nybegynder
20. juli 2002 - 17:45 #4
Det er nu ikke så svært :)

#include <windows.h>
#include <windowsx.h>
#include <stdio.h>   

#define WINDOW_CLASS_NAME "WINCLASS1"

LRESULT CALLBACK WindowProc(HWND hwnd,
                    UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{

PAINTSTRUCT        ps;
HDC            hdc;

switch(msg)
    {   
    case WM_CREATE:
        {
        return(0);
      } break;

    case WM_PAINT:
        {
        hdc = BeginPaint(hwnd,&ps);   
        //do painting here
            EndPaint(hwnd,&ps);
        return(0);
          } break;

    case WM_DESTROY:
        {
        PostQuitMessage(0);

        return(0);
        } break;

    default:break;

    }

return (DefWindowProc(hwnd, msg, wparam, lparam));

}

int WINAPI WinMain(    HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    int ncmdshow)
{

WNDCLASSEX winclass;
HWND      hwnd;
MSG      msg;

winclass.cbSize        = sizeof(WNDCLASSEX);
winclass.style        = CS_DBLCLKS | CS_OWNDC |
                          CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc    = WindowProc;
winclass.cbClsExtra    = 0;
winclass.cbWndExtra    = 0;
winclass.hInstance    = hinstance;
winclass.hIcon        = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground    = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName    = NULL;
winclass.lpszClassName    = WINDOW_CLASS_NAME;
winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

if (!RegisterClassEx(&winclass))
    return(0);

if (!(hwnd = CreateWindowEx(NULL,
                            WINDOW_CLASS_NAME,
                            "Your Basic Window",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            0,0,   
                            400,400,
                            NULL,   
                            NULL,   
                            hinstance,
                            NULL)))   
return(0);

while(GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);

    DispatchMessage(&msg);
    }

return(msg.wParam);

}
Avatar billede nico26 Nybegynder
20. juli 2002 - 17:54 #5
En windows applikation består af en WinMain, hvor man kan registrere en windows-klasse som man derefter kan oprette et instans af. Når man registrerer klassen giver man en pointer til en callback-metode (WindowProc), som windows kalder, når der er en "besked" til vinduet. Hvis du vil tegne noget på vinduet, kan du gøre det når vinduet modtager en WM_PAIT message.
Avatar billede visbyrocker Nybegynder
23. juli 2002 - 21:22 #6
Tak nico22

Jeg er vist mere begynder end jeg regnede med...
Der er ikke så meget af det jeg forstår. Jeg må hellere vente lidt med det, indtil jeg har prøvet lidt andet. Man må kravle før man kan gå!

Du må få pointene hvis du vil have dem.
Avatar billede nico26 Nybegynder
23. juli 2002 - 21:25 #7
Prøv at kig lidt på det. Det ser værre ud end det er :)
Avatar billede soepro Nybegynder
30. juli 2002 - 15:39 #8
nico22 >> Godt eksempel - nu forstår jeg hvordan Windows ved hvortil den skal "despatche" sine meddelelser.
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