Fullscreen
-
Showball schrieb:
nein ich hab die basics von C++ schon verstanden
Dein Code sieht aber nicht wirklich danach aus.
Der Code macht *nichts*, weil du FullScreen() nicht aufrufst. Hättest du die Basics verstanden, würdest du das selbst bemerkt haben.
Und selbst wenn du FullScreen() in WinMain aufrufen würdest, würde immer noch nichts passieren, weil du kein Fenster erstellt hast, das maximiert werden könnte.Du willst in Visual Studio ein Konsolenprojekt statt eines Win32-Projekts erstellen, dann hat deine FullScreen()-Funktion auch einen Sinn. Wenn du sie denn auch aufrufst.
-
ich benutze doch garkein konsolen projekt, oder doch?? Also bei mir kommt ein Windows fenster. Wenn ich ein neus projekt mache gehe ich auf Win32 dann auf Windows konsolenanwendung anschließend gehe ih in den Anwendungseigenschaften und stelle es auf Windows Anwendung um ....
wegen dem "es wird nicht ausgeführt": Ich habe es ohne alles in der Winmain hier gepostet, da das ziehmlich unübersichtlich ist und das von mir ja eh nicht geht

Hier habe ich mal einen Quelltext gemacht wo einfach eine linie angezeigt wird. ich denke das sollte alles abdecken das es ausgeführt wird.
#include <windows.h> #include <iostream> #include "stdafx.h" #include "hvhjbhlk.h" void FullScreen () { keybd_event (VK_MENU, 0x38,0,0); keybd_event (VK_RETURN,0x1C,0,0); keybd_event (VK_RETURN,0x1C,KEYEVENTF_KEYUP,0); keybd_event (VK_MENU, 0x38,KEYEVENTF_KEYUP,0); } LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT ps; int i; switch( message ) { case WM_PAINT: hdc = BeginPaint( hwnd, &ps ); for(i=0; i<1024; i++) SetPixel( hdc, i, 100, RGB(0,0,255) ); EndPaint( hwnd, &ps ); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); } int WinMain ( HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow ) { static TCHAR szName[] = TEXT("Fensterklasse"); HWND hwnd ; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hI; wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = szName; RegisterClass (&wc); hwnd = CreateWindow (szName, TEXT("Punkte setzen"), WS_OVERLAPPEDWINDOW, 0, 0, 200, 200, NULL, NULL, hI, NULL); ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; }Wenn ich es nun starte kommt es in verkleinerter Form, also 200x200 Pixel, was ich irgentwie ziehmlich komisch finde.
Könntet ihr mir vieleicht weiter helfen?

-
Erstens: du rufst FullScreen() immer noch nicht auf.
Zweistens: selbst wenn du FullScreen() aufrufen würdest, würde das Ergebnis nicht deinen Erwartungen entsprechen, weil die Tastenkombination Alt+Enter ausschließlich Konsolenfenster in den Vollbildmodus schaltet, nicht jedoch "normale" Fenster.Wenn du wirklich Vollbildmodus inkl. eventueller Auflösungumschaltung willst, wirst du wohl DirectX bemühen müssen. Wenn du aber nur ein maximiertes Fenster willst (was ich dir empfehle), lies dir die Dokumentation zu ShowWindow() und zu Fensterstilen (insbesondere WS_POPUP, wenn es ein Fenster ohne Rahmen werden soll) durch.
-
Du hast die Basics nicht drauf..
Was ist an 200x200 komisch? Du gibst doch selber die Werte an.
In einen anderen Thread gibst du einen Code aus der mit 16 Fehler behaftet ist und nur weil du vor dein Kommentar keine // setzt. Wo bitteschön sind das keine Basics.
-
ich wollte dir nur mal sagen, das man so keine Linien malt (etwas umständlich :D) und ich hab "bis jetzt" noch nie gesehen dass die WindowProc über der WinMain geschrieben wurde. Rufst du Fullscreen überhaupt auf ? ( ob das funktioniert weis ich nicht )
-> die 200x200 kommen daher das du dein Fenster in dieser Größe erstellst !
-
Showball schrieb:
Wie viele m9tler weile wissen bin ich ein blutiger anfänger in c++ und hatte bei allen tutorialen schwierigkeiten, da ständig fehlermeldungen kahme
Soviel zum Thema Basics... Wenn du mit Fenstern arbeitest, gibt es dafuer die Funktion ShowWindow (hwnd, SW_MAXIMIZE). hwnd muss zuvor natuerlich mit deinem Fenster initialisiert worden sein.

-
ich weiß ja selber das ich sie auf 200x200 pixel eingestellt habe!!
ich fand das nur komisch, da ich ja fullscreen habe, das es nicht im vollbild angezeigt wird ....
Demnächst sollte ich mich wohl etwas genauer ausdrücken damit keine missverständnisse aufkommen!
kennt ihr vieleicht ein gutes Tutorial für Direktx und c++, wie ich das mit dem fullscreen mache? am besten in deustch wenns geht

danke nochmals für die hilfe, ich hätte noch stunden rumprobiert, aber fullscreen scheint ja wohl bei Windows anwendungen net zu gehen

-
Schon, wenn du als WindowStyle WS_POPUP nimmst, hast du keinen Rahmen. Das ganze maximiert gibt dann Fullscreen, d.h. ohne Rahmen und auch ohne Taskleiste, wie bei Spielen oder einem Videoplayer.
Ernsthaft, jetzt mit DirectX anzufangen wird wahrscheinlich ziemlich frustrierend sein, wenn du noch Probleme mit normalen C++ und der WinAPI hast. Versuch erstmal, da routinierter zu werden, sonst glaub ich nicht, dass es dir Spaß machen wird, zusätzlich noch DirectX zu lernen. Das würde ich nämlich schon als Fortgeschrittenen- bzw. Profithema bezeichnen.
@noha:
In welcher Reihenfolge die WindowProc und die WinMain stehen, ist ziemlich wurscht. Man muss nur passend deklarieren.gruß
Martin
-
Vielen dank, bin gerade ebnd auf das popup dings da auch gekommen.
mal so ne frage neben bei, ich weiß das es sich jetzt ziehmlich dumm anhört, aber was bedeutet d.h. ???^^
-
Das heist...
-
So habe das mal mit dem popup gemacht, das muss doch so aussehen oder?
hWnd = CreateWindow( szAppName, szAppName, WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);ich wollte ja etwas genauer sein. das ist nur ein ausschnitt aus meinem Quellcode nicht der gesammte, das ist der ausschnitt wo ich das popup dings da eingefügt habe^^
und beim Kompilieren Spuckt er mir folgendes aus:
c:\dokumente und einstellungen\dustin\eigene dateien\visual studio 2005\projects\hvhjbhlk\hvhjbhlk\hvhjbhlk.cpp(50) : warning C4244: 'return': Konvertierung von 'WPARAM' in 'int', möglicher Datenverlust
c:\dokumente und einstellungen\dustin\eigene dateien\visual studio 2005\projects\hvhjbhlk\hvhjbhlk\hvhjbhlk.cpp(149) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
c:\dokumente und einstellungen\dustin\eigene dateien\visual studio 2005\projects\hvhjbhlk\hvhjbhlk\hvhjbhlk.cpp(149) : warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?enn ich stat popup, das hier nehme klappt es, aber halt im normalen windows fenster

WS_OVERLAPPEDWINDOW,
weip einer zufällig rat?
EDIT: Habe es hinbekommen, war ein kleiner Anfängerfehler, habe nicht daran gedacht das ich noch ne unfertige While Schleife offen hatte!
Aber wo muss ih das nun einfügen, das popup, habe jetzt nen paar sachen ausprobiert aber es klappt einfach net, er zeigt unten in der leiste dann an, aber kein window

-