PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ - zusätzliches Fenster


Gast
2003-06-23, 18:28:03
Ich würde gerne wissen wie ich in c++ ein zweites fenster öffnen kann bzw. wie ich dieses kontrollieren kann (ausblenden, einblenden, ....)

Lord Nikon
2003-06-23, 18:42:16
Ein zweites Fenster kannst du durch

Create (
NULL, // Klassename über AFX-Msg
"Fenster2", //Fenstertitel
WS_CLIPCHILDREN // Fensterstil/-Eigentschaften
| WS_CLIPSIBLINGS,
CRect(0,0,400,400), //Fensterposition & Größe
NULL, //KEIN ELternfenster
NULL, // Kein DialogMenu
WS_EX_TOPMOST, // Erweitere Fensterstile
NULL) //kein ZeigerCreateContext

erstellen. Mit
ShowWindow(SW_HIDE); kann man das Fenster verstecken und mit ShowWindow(SW_SHOWNOACTIVATE) kannst du anzeigen lassen

Xmas
2003-06-23, 18:47:26
Gast,

was meinst du mit "in C++"? Benutzt du ein Framework (MFC, VCL, Managed C++) oder reine Windows API. Bei letzterem erstellst du ein weiteres Fenster genauso wie das erste - mit CreateWindowEx().

Gast
2003-06-23, 18:47:50
thx..aber.....
ich spreche von Visual C++ 6.0

1. welches Handle hat dieses Fenster dann?
2. Diese Funktion gibt es nicht..oder zumindest kennt sie mein Compiler nicht

Gast
2003-06-23, 18:49:37
ahja..thx Xmas

und wie spreche ich dieses Fenster an?

Lord Nikon
2003-06-23, 18:55:49
Mit der Winapi kannst du es mit

ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state of window
);

ansprechen. Übrigens dürfte der Code für das Fenster gepostet habe bei der gehen , weil es bei mir im vc 6.0 ohne Probleme klappt.
Die Methode Create ist von CFrameWnd abgeleitet.

Gast
2003-06-23, 19:19:57
ahja..danke
das werd ich mal ausprobiern

irgendwelche probleme werd ich sicher noch haben->ich melde mich wieder ;)

Xmas
2003-06-23, 20:11:40
Original geschrieben von Lord Nikon
Übrigens dürfte der Code für das Fenster gepostet habe bei der gehen , weil es bei mir im vc 6.0 ohne Probleme klappt.
Die Methode Create ist von CFrameWnd abgeleitet.
Dafür muss das Projekt aber mit MFC-Unterstützung erstellt werden, und Create muss zu einer Instanz aufgerufen werden.

Gast
2003-06-23, 21:54:02
Das entspricht allerdings der Wahrheit
das problem hab ich aber ohnehin schon gelöst


andere Frage:
zum neu-zeichnen meines fensters verwende ich einen Performence Counter (QueryPerformanceFrequency((LARGE_INTEGER*)&frequency)). Mit einer if-abfrage überprüf ich, ob die zeit bis zum nächsten Frame schon abgelaufen ist. Wenn ja wird das fenster neu gezeichnet (und anderes).
ABER: das Bild flackert irrsinnig. Was kann man dagegen tun?

Xmas
2003-06-23, 22:39:24
Original geschrieben von Gast
Das entspricht allerdings der Wahrheit
das problem hab ich aber ohnehin schon gelöst


andere Frage:
zum neu-zeichnen meines fensters verwende ich einen Performence Counter (QueryPerformanceFrequency((LARGE_INTEGER*)&frequency)). Mit einer if-abfrage überprüf ich, ob die zeit bis zum nächsten Frame schon abgelaufen ist. Wenn ja wird das fenster neu gezeichnet (und anderes).
ABER: das Bild flackert irrsinnig. Was kann man dagegen tun?
Was genau zeichnest du in das Fenster, und wie oft zeichnest du?

Gast
2003-06-23, 23:04:11
das zeichne ich ~100x/sekunde
http://booster.strikenet.com/blaxes.exe

Xmas
2003-06-23, 23:44:55
Original geschrieben von Gast
das zeichne ich ~100x/sekunde
http://booster.strikenet.com/blaxes.exe
Du bräuchtest Double Buffering um das Flimmern zu vermeiden. Also entweder renderst du das Bild erst in einem Bitmap im Speicher fertig und bringst es dann auf den Bildschirm, oder du verwendest z.B. OpenGL oder DirectX mit Double Buffering.

Gast
2003-06-24, 20:10:06
wie würde das mit OPENGL oder DirectX aussehn?
kannst du mir da ein beispiel geben?