Hjælpe til Win32

Tags:    c++

Hej.
Jeg har fundet det her program: Code::block.
Når jeg opretter et nyt projekt, laver den en hel kode til at starte. Fatter ikke hvor jeg skal skrive indholdet.
Jeg har fundet ud af hvor jeg skal skrive en title. Men resten holder ikke. Nogen der kan hjælpe?
Dette er koden:
#include <windows.h>

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "CodeBlocksWindowsApp";

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 Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails 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 */
"Benjamins Program", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
700, /* The programs width */
600, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL,
);

/* 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;
}


Det jeg vil er at lave en lille hvid box hvor jeg har skrevet noget tekst inden i. Noget ala en hjemmeside.



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Når du siger en lille hvid boks, så går jeg udfra at det f.eks. er et textarea-tag du tænker på i HTML
Fold kodeboks ind/udKode 

I C er dét, desværre bare en del sværere. Du siger selv at du ikke forstår så meget af dit program, og efter min mening, burde du måske læse lidt mere omkring hvordan det fungerer før du kaster dig ud i det hele. Hvis du vil prøve lykken nu, så er det funktionen, CreateWindowEx() du skal bruge. Denne funktion bruges til vinduer, controls, etc. Du skal bruge klassen, "EDIT", for at lave et "textarea" (i "HTML-sprog").
Fold kodeboks ind/udKode 

Du skal selvfølgelig selv tilføje styles, osv. Hvis du ønsker at den skal fylde hele vinduet, kræver det at du bruger en funktion (hvis størrelsen er dynamisk), til dette kan du bruge GetClientRect() der som argument bl.a. tager en RECT-struktur
Fold kodeboks ind/udKode 

Som sagt er det at lære Win32 API'et, bare nogenlunde at kende, en ordenligt mundfuld. Hvis du ikke kender C (eller C++) er det en idé at lære det først, og derefter sætte dig grundigt ind i Win32 API'et. Derudover ville det være en idé at anskaffe dig Win32-referencen/dokumentationen.

Mere information omkring de forskellige funktioner, mm., kan findes på MSDN.



Ok, tusind tak!



Øhm..lige en ting mere.
Hvor skal den der kode stå hende?



Ofte bliver "main"-vinduet lavet i WinMain() og controlsne i WM_CREATE, i vindueproceduren. Hvis du ønsker at tilføje WM_CREATE til dit lille projekt, så se her:
Fold kodeboks ind/udKode 




t