Avatar billede wollabella Nybegynder
22. juni 2001 - 14:32 Der er 13 kommentarer

GRafik i C++

Hej jeg er lige begyndt på c++ og de ting jeg laver åbner den i DOS... hvordan laver jeg så windows åbner det... altså med grafik osv... har prøvet mig frem f.eks

#include <windows.h>

/* 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 light-gray as the background of the window */
    wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);

    /* Register the window class, if fail 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;
}


#include <stdio.h>

void main() 
{   
    FILE *f;   
    char s[1000];
   
    f=fopen(\"shiter.txt\",\"r\");
    while (fgets(s,1000,f)!=NULL)     
        printf(\"%s\",s);   
    fclose(f); 
}


men forstår ikke hvordan man skal sætte det sammen nogen som kan forklare det?
Avatar billede jpk Nybegynder
22. juni 2001 - 14:35 #1
Du skal bruge main() til DOS og WinMain(...) til Windows...
Avatar billede wollabella Nybegynder
22. juni 2001 - 14:37 #2
for denne fejl

C:\\PROGRA~1\\MICROS~3\\DEV-C_~1\\LIB\\\\libmingw32.a(main.o)(.text+0x8e): undefined reference to `WinMain@16\'
Avatar billede jpk Nybegynder
22. juni 2001 - 14:39 #3
Hvorfor finder du ikke et kørende eksempel til at starte med?
Avatar billede wollabella Nybegynder
22. juni 2001 - 14:40 #4
et kørende??? hvad mener du?
Avatar billede kamikaze Nybegynder
22. juni 2001 - 15:30 #5
Det er noget helt andet at gå igang med Windows-programmering. Her skal du bruge Windows API-kald (API = Application Programming Interface), og dem er der ca. 10.000 af.

Der er en fejl i din kode ovenover. Du har både en WinMain (int WINAPI WinMain) og en Main (void main()). Den sidste er til DOS, og skal ikke bruges i Win32 prog.

Følgende er dit Message-loop:

while(GetMessage(&messages, NULL, 0, 0))
    {
          TranslateMessage(&messages);
          DispatchMessage(&messages);
    }

I WindProc\'en \"parser\" du dine beskeder:

LRESULT CALLBACK WindowProcedure //*** kaldes WindProc\'en

Beskeder kan i windows fx. være:

WM_PAINT (Beskeder om at vinduet skal tegnes)
WM_KEYDOWN (Besked om at tast er trykket)
WM_DESTROY (Besked om at vindue destrueres)

Du kan \'fange\' disse beskeder, og beslutte hvad der skal ske når de indtræffer
Avatar billede kamikaze Nybegynder
22. juni 2001 - 15:31 #6
Hvilken compiler bruger du??? Jeg har måske noget kode liggende der virker!
Avatar billede jpk Nybegynder
22. juni 2001 - 15:42 #7
Jeg mener et lille windowsprogram der ikke har nogen avanceret funktionalitet, så du kan se hvordan det grundlæggende fungerer i windowsprogrammering...
Avatar billede wollabella Nybegynder
22. juni 2001 - 17:14 #8
jeg har bloodshed!!!!
Avatar billede wollabella Nybegynder
22. juni 2001 - 23:17 #9
kunne jeg evt. få en url til en manual / guide lign.

er DOS c++ noget fuldstændig andet end win32 c++ altså er det ngoen helt andre kommadoer?
Avatar billede jd Nybegynder
26. juni 2001 - 19:56 #10
jpk-> Noget du har en anelse om hvor man finder?
Avatar billede jpk Nybegynder
27. juni 2001 - 08:49 #11
Du kan finde en masse eksempler rundt omkring på nettet, men hvis du ikke har den store indsigt i programmering, er det også svært at vælge, hvilke eksempler du skal bruge...
Måske du skulle låne/købe en bog istedet! Du kan typisk læse på bogens omslag, hvad den handler om, og så vælge den der passer til dit behov!
Avatar billede jd Nybegynder
27. juni 2001 - 12:41 #12
Avatar billede cipherz Nybegynder
14. juli 2001 - 19:19 #13
grafik ? mener du at du vil lave effekter ?
eller er det et win32 program som stil med en lommeregner ting du vil lave ?
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