[Win Api] Tips zum erstellen der Minesweeperoberfläche

Tobias K.

Erfahrenes Mitglied
moin


Ich möchte eine Art Minesweeper programmieren.

Nun frage ich mich wie ich am besten die ganzen kleinen Button erstelle, also die wo man drauf klickt.

Ich hatte mir das so gedacht:
Code:
HWND hChild[100]; //100 nur als Beispiel

...
// Schleife beginnt und erzeugt alle Buttons

hChild[x] = CreateWindow("Child", NULL,
				  WS_CHILD | WS_VISIBLE | WS_DLGFRAME,
				  0, 0, 10, 10,
				  hWnd, NULL,
				  ((LPCREATESTRUCT) lParam) -> hInstance,
				  NULL);

MoveWindow(hChild [x], ..... , true);

//Schleife endet

Oder gibt es ne bessere möglichkeit die ganzen Buttons zu erstellen?


mfg
umbrasaxum
 
Ich würde da nicht 100x100 Buttons oder so erstellen. Nimm einfach das Fenster und registriere, wohin die Mausklicks gehen. Die Buttonoptik kannst du auch mit den GDI-Funktionen bekommen, zum Beispiel mit DrawEdge() oder falls du MFC verwendest, auch mit CDC:: Draw3DRect().
 
Zuletzt bearbeitet:
moin


Ich krieg es nciht gebacken das etwas nach Aufruf der Funktion DrawEdge angezeigt wird.
Hättest du vielleicht ein Anwendungsbeispiel? Aber ohne MFC!


mfg
umbrasaxum
 
Nee, habe ich im Moment leider nicht. Wenn es ohne MFC ist, kann Endurion das ohnehin besser beantworten, denke ich.

Endurion, ich beschwöre dich! :)
 
moin


Hmm, na gut.

Hab jetzt auch schon geschafft ein "Ding" zu erstellen.
Jedoch ist es leider nicht mit dem vergleichbar was erscheint, wenn ich den oben geposteten Code verwende.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
moin


Also:
Ich hab es mal mit Buttons versucht, kann aber nur davon abraten da es sehr lange Ladezeiten zur folge hat.


mfg
umbrasaxum
 
***Puff*** (nein, nicht die Bordell-Variante)

Wie du schon gemerkt hast, sind viele Buttons des Windows Tod, also a****-lahm. Da ist es besser, die Fläche selbst darzustellen, so dass es wie viele Buttons aussieht.
Kachelator (Gruss, alter Russki) hat da schon eine Möglichkeit aufgezeigt: DrawEdge.
Die Darstellung machst du entweder in WM_PAINT (HDC über BeginPaint holen, dann zeichnen, EndPaint) oder in WM_ERASEBKGND.

Als weitere Alternative schlage ich neben DrawEdge DrawFrameControl vor. Damit kannst du einen Button-Rahmen von Windows darstellen lassen, auf Wunsch auch mit gedrücktem Status. Die Parameter holst du dir am besten aus der MSDN.
 
moin


Hab mal schnell DrawFrameControl ausprobiert und es hat sofort zum erwünschten Ergebnis geführt! Scheint außerdem ne sehr interessante Funktion zu sein (was man damit alles machen kann).

Danke für die Hilfe.

Was nist eigentlich die Bordell-Variante? Ist ein Bordell wie man es so kennt gemeint?


mfg
umbrasaxum
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück