Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

08.04.2004, 10:30

neues Fensterproblem :-)

[code]
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS WndClass;
WndClass.style = 0;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.lpfnWndProc = WndProc;
WndClass.hInstance = hInstance;
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
WndClass.lpszMenuName = 0,
WndClass.lpszClassName = "WinProg";

RegisterClass(&WndClass);

HWND hWindow;
hWindow = CreateWindow("WinProg","Fenster",
WS_OVERLAPPEDWINDOW,
0,0,600,480,NULL,NULL,
hInstance,NULL);

ShowWindow(hWindow, nCmdShow);

UpdateWindow(hWindow);

MSG Message;
while(GetMessage(&Message,NULL,0,0))
{
DispatchMessage(&Message);
}

return(Message.wParam);
}


LRESULT CALLBACK WndProc (HWND hWnd, UINT uiMessage,
WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
case WM_DESTROY:
PostQuitMessage(0);
return (0);
case WM_PAINT:
HPEN hPen;
HPEN hPenalt;
HBRUSH hBrush;
HBRUSH hBrushalt;
hBrush = CreateSolidBrush (RGB(255,0,0));
hPen = CreatePen(PS_SOLID,2,RGB(0,255,255));
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint (hWnd, &ps);
hBrushalt = SelectObject(hdc,hBrush);
hPenalt = SelectObject(hdc,hPen);
MoveToEx(hdc,20,20,NULL);
LineTo(hdc,100,100);
Rectangle(hdc,120,20,240,140);
RoundRect(hdc,260,20,420,140,20,20);
RECT rect;
SetRect(&rect,20,260,240,420);
FrameRect(hdc,&rect,hBrush);
SetRect(&rect,260,260,420,420);
FillRect(hdc,&rect,hBrush);
Ellipse(hdc,440,260,480,420);
SelectObject(hdc,hBrushalt);
SelectObject(hdc,hPenalt);
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&ps);
return (0);





default:
return DefWindowProc(hWnd, uiMessage,
wParam, lParam);
}
}
[/code]

Leider lässt sich diese Programm so nicht bei mir kompilieren :-(

Könnte mir jemand eine Lösung schicken???

Hinzu habe ich wieder drei wunderbare Fragen:
a) gebe ich mit delete das pen object aus speichergründen wieder frei, da ich sonst x objekte davon haben??

b)wieso rufe ich EndPaint auf???

c)was bewirkt selectobject???

ich hoffe ich überfalle euch nicht mit diesen fragen.
wenn jemand die antwort darauf weiß, schreibe er sie doch eben.

mit freundlichen grüßen

der dude

Anonymous

unregistriert

2

08.04.2004, 10:32

Endschuldigung, dass der code nicht im grünen kasten ist. leider kann ich nicht sagen wieso - habe schon die code-tags gesetzt.

mfg der dude

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

08.04.2004, 12:19

1. was spuckt der compiler denn für fehler aus?
2. funzt der code auch ohne den ganzen WM_PAINT kram? so kann man den fehler eingrenzen.

zu deinen fragen:
http://msdn.microsoft.com
http://www.langenscheidt.de/

Gruß,
Patrick

Anonymous

unregistriert

4

08.04.2004, 13:29

ALso ohne die WM_PAINT funzt es. Und ich habe den Fehler gefunden: SelectObjekt liefert ein void*-Zeiger und du hast vergessen den Kram zu konvertiern.
hBrushalt = (HBRUSH)(SelectObject(hdc,hBrush));
hPenalt = (HPEN)(SelectObject(hdc,hPen));
Hat 5 min gedauert. Ich habe nur das ganze ausgeklammert und dann immer mehr wieder ausgeklammert bis ich den Fehler hatte. :huhu:

Anonymous

unregistriert

5

08.04.2004, 14:10

Vielen dank Nemo.
hast du das programm debugt????

p.s. hast du einen clownfisch??? ne spass bei seite :P

Anonymous

unregistriert

6

08.04.2004, 15:41

ich habe in der doku nach der selectObject funktion gesucht und da diese Sache gefunden, aber debugen hilft da auch. :huhu:

Werbeanzeige