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

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

23.02.2007, 09:19

win32 fenster cbWndExtra und cbClsExtra

ähm.. ich wollte mich nur einmal darüber informieren, in welchen fällen man eigentlich zusätzlichen speicher für die klasse bzw. das fenster reservieren würde?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX WndClsEx;

    WndClsEx.cbSize     = sizeof(WNDCLASSEX);
    WndClsEx.cbClsExtra = 0;
    WndClsEx.cbWndExtra = 0;
    WndClsEx.hInstance  = hInstance;

// [...]


    return 0;
}



*edit:
aja und wie war das noch schnell mit GetMessage() und PeekMessage()..?
da war ja ein unterschied oder?
GetMessage() hat gewartet bis ne nachricht kommt, und PeekMessage() lässt weiter laufen und schaut immer wieder ob eine da ist bzw. kommt oder?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

23.02.2007, 09:38

1) Mir ist es zumindest bisher noch nicht passiert, das ich da mehr Speicher brauchte. Im Petzold sollte / könnte ein Grund für das nötige sizeof() stehen.

2) GetMessage "blockt" den Programmverlauf quasi (ähnlich wie std::cin), PeekMessage verhält sich da im Vergleich eher wie kbhit() oder der andere Kram aus der Conio.h.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

3

23.02.2007, 09:42

ok danke :)

ich hab mich nur gefragt.. wozu man wohl speicher reservieren könnte ^^
bin gespannt ob da jemand mit einem grund kommt +g+
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

23.02.2007, 09:59

Zitat von »"Das Gurke"«

1) [...] Im Petzold sollte / könnte ein Grund für das nötige sizeof() stehen.

Das "nötige sizeof()" hat nichts mit cbClsExtra und cbWndExtra zu tun. So gut wie jede Struktur erhält als erstes Attribut die Byte-Größe der Struktur (also "von sich selbst"). Das ist ein einfacher Sicherheits-Check, um Fehler, die aus Versehen passieren, zu erkennen. (edit: Und um somit "illegalen" Speicherzugriffen vorzubeugen.)

Ansonsten, $nooc, wenn von Deiner Seite kein Bedarf besteht, zusätzlichen Speicher für Deine individuellen Daten zu reservieren, dann kannst Du cbClsExtra und cbWndExtra ja einfach ignorieren. Es besteht halt einfach nur die Möglichkeit, dort eigene Daten zu hinterlegen, was aber im Falle von Kapselung (C++) relativ unnütz ist, weil Du ja viel komfortablere Member-Variablen halten kannst.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

23.02.2007, 10:35

das mit dem sizeof in der struktur ist nicht nur ein sicherheits check.
es dient afaik auch dazu, die version der struktur herauszufinden. es gibt ja in der WinAPI von einigen strukturen haufenweise verschiedene versionen bzw. funktionen die verschiedene strukturen als parameter bekommen können (z.b. BITMAPINFOHEADER -> BITMAPV4HEADER -> BITMAPV5HEADER).

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

6

23.02.2007, 10:37

ok danke für die antwort :)
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Werbeanzeige