<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Leider mal wieder Fullscreen *duck*]]></title><description><![CDATA[<p>hi... leider ist es immer wieder dasselbe Thema...<br />
ich hab in der letzten Stunde nix anderes gemacht, als den Code durchzugehen, und mit anderen zu vergleichen.... Klammern überprüft usw.... aber ich komme auf keinen grünen Zweig... ich wette es ist ein ganz einfacher Fehler... und ich werde mir an den Kopf fassen, wenn mir wer den Fehler nennt. Also hier ist der Code...</p>
<pre><code>//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
bool fullscreen = true;
bool OsWinNt(void);
int NW,NH,NC,NF;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  Form1-&gt;Left = (Screen-&gt;Width - 800) / 2;     //Hier setzten wir unsere Form erstmal in die Mitte
  Form1-&gt;Top = (Screen-&gt;Height - 600) / 2;      //des Bildschirms

  Form1-&gt;DoubleBuffered = true;                 //Hier nicht unbedingt notwendig, schadet aber nicht
  Form1-&gt;BorderStyle = bsNone;                  //Die Titelleiste der Form ausblenden (kein Border)

  NW = Screen-&gt;Width;                           // alte Breite der Bildschirmauflösung
  NH = Screen-&gt;Height;                          // und alte Höhe, das brauchen wir zum Zurückschalten
  NC = GetDeviceCaps(Canvas-&gt;Handle,BITSPIXEL); //Farbtiefe erfragen

  DEVMODE Modus;
  bool Modok = false;
  int CurrentModeNo = 0;
  while (EnumDisplaySettings(NULL, CurrentModeNo, &amp;Modus)) // Prüfen, ob einer der verfügbaren Videomodi die
  {                                                        // neuen Einstellungen unterstützt
    if (Modus.dmBitsPerPel == DWORD(NC) &amp;&amp; Modus.dmPelsHeight == DWORD(600) &amp;&amp; Modus.dmPelsWidth == DWORD(800))
    {                                                      // Wenn ja,
      if(OsWinNt())                                        // und wenn OS NT,2000 oder XP ist,
      {                                                    // vergleiche die Bildwiederholfrequenz:
        if(Modus.dmDisplayFrequency == (DWORD)NF)
        {
          Modok = true;                                      //dann ist der Modus ok
          break;
        }
      }
      else
      {
        Modok = true;                                        // Wenn kein NT-System, dann
        break;                                               // ist Modus auf jedenfall ok
      }
    }

  CurrentModeNo++;
  }

  AnsiString screenMessage;                     //screenMessage wird deklariert
  if(Modok)                                     //Wenn Modus ok
  {
    int Status = ChangeDisplaySettings(&amp;Modus, CDS_UPDATEREGISTRY);
    if (Status == DISP_CHANGE_SUCCESSFUL)       //Wenn Display erfolgreich geändert
    {                                           //wurde
      fullscreen = true;                        //setze fullscreen auf true
    }
    else                                        //Wenn Display nicht erfolgreich
    {                                           //geändert wurde
      screenMessage = &quot;Angegebene Bildschirmeinstellungen werden &quot;
      &quot;auf diesem System nicht unterstützt !&quot;;  //Zeige folgende Message
      ShowMessage(screenMessage);
    }
  }
  Button2-&gt;Visible = true;                      //Button wird angezeigt

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Button2-&gt;Visible = false;
  if (fullscreen)                               //Wenn momentan Fullscreen
  {
    DEVMODE Modus;
    int CurrentModeNo = 0;
    while(EnumDisplaySettings(NULL, CurrentModeNo, &amp;Modus))  //Prüfen, ob einer der verfügbaren Videomodi die
    {                                                        // neuen Einstellungen unterstützt
      if (Modus.dmBitsPerPel == (DWORD)NC &amp;&amp; Modus.dmPelsHeight == (DWORD)NH &amp;&amp; Modus.dmPelsWidth == (DWORD)NW)
      {
        break;
      }
      CurrentModeNo++;
    }
    fullscreen = false;                         //Kein Fullscreen mehr
  }

  //Nun noch die standart größen der Form, wieder in die Mitte setzten und den Border
  //auf bsSingle zurück setzten, damit wir die Titelleiste sehen
  Form1-&gt;Width = 800;
  Form1-&gt;Height = 600;
  Form1-&gt;Left = (Screen-&gt;Width - 800) / 2;
  Form1-&gt;Top = (Screen-&gt;Height - 600) / 2;
  Form1-&gt;BorderStyle = bsSingle;
}
//---------------------------------------------------------------------------
bool OsWinNt(void) //Überprüfung, ob es ein NTsystem ist, wenn ja wird true zurückgegeben
{
  OSVERSIONINFO stVerInfo;
  stVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&amp;stVerInfo);
  return (stVerInfo.dwPlatformId==VER_PLATFORM_WIN32_NT);
}
</code></pre>
<p>ich hoffe er ist ausreichend kommentiert...<br />
im Prinzip macht der Code nix anderes als die Form1 im Fullscreen anzuzeigen und wenn man dann auf den Button klickt, der erst dann erscheint... kommt man wieder in den Window-mode...</p>
<p>Nun ist das Problem, dass er einfach nich in den Fullscreenmode geht... er ändert meine Screengröße einfach nich ab...<br />
Wenn ich die OS-Überprüfung und die Frequenz-Überprüfung rausnehm, dann geht er zwar in den Fullscreenmode, aber behält dann die größe 800*600 bei... also muss ich von Hand meine Einstellung wieder machen...<br />
Für jede Hilfe wär ich dankbar... wenn ich irgendwas forenregeltechnisches Falsch gemacht hab, bidde daraufhinweisen...</p>
<p>mfg mck...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/94681/leider-mal-wieder-fullscreen-duck</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 02:46:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94681.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Dec 2004 18:09:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sat, 11 Dec 2004 18:09:23 GMT]]></title><description><![CDATA[<p>hi... leider ist es immer wieder dasselbe Thema...<br />
ich hab in der letzten Stunde nix anderes gemacht, als den Code durchzugehen, und mit anderen zu vergleichen.... Klammern überprüft usw.... aber ich komme auf keinen grünen Zweig... ich wette es ist ein ganz einfacher Fehler... und ich werde mir an den Kopf fassen, wenn mir wer den Fehler nennt. Also hier ist der Code...</p>
<pre><code>//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
bool fullscreen = true;
bool OsWinNt(void);
int NW,NH,NC,NF;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  Form1-&gt;Left = (Screen-&gt;Width - 800) / 2;     //Hier setzten wir unsere Form erstmal in die Mitte
  Form1-&gt;Top = (Screen-&gt;Height - 600) / 2;      //des Bildschirms

  Form1-&gt;DoubleBuffered = true;                 //Hier nicht unbedingt notwendig, schadet aber nicht
  Form1-&gt;BorderStyle = bsNone;                  //Die Titelleiste der Form ausblenden (kein Border)

  NW = Screen-&gt;Width;                           // alte Breite der Bildschirmauflösung
  NH = Screen-&gt;Height;                          // und alte Höhe, das brauchen wir zum Zurückschalten
  NC = GetDeviceCaps(Canvas-&gt;Handle,BITSPIXEL); //Farbtiefe erfragen

  DEVMODE Modus;
  bool Modok = false;
  int CurrentModeNo = 0;
  while (EnumDisplaySettings(NULL, CurrentModeNo, &amp;Modus)) // Prüfen, ob einer der verfügbaren Videomodi die
  {                                                        // neuen Einstellungen unterstützt
    if (Modus.dmBitsPerPel == DWORD(NC) &amp;&amp; Modus.dmPelsHeight == DWORD(600) &amp;&amp; Modus.dmPelsWidth == DWORD(800))
    {                                                      // Wenn ja,
      if(OsWinNt())                                        // und wenn OS NT,2000 oder XP ist,
      {                                                    // vergleiche die Bildwiederholfrequenz:
        if(Modus.dmDisplayFrequency == (DWORD)NF)
        {
          Modok = true;                                      //dann ist der Modus ok
          break;
        }
      }
      else
      {
        Modok = true;                                        // Wenn kein NT-System, dann
        break;                                               // ist Modus auf jedenfall ok
      }
    }

  CurrentModeNo++;
  }

  AnsiString screenMessage;                     //screenMessage wird deklariert
  if(Modok)                                     //Wenn Modus ok
  {
    int Status = ChangeDisplaySettings(&amp;Modus, CDS_UPDATEREGISTRY);
    if (Status == DISP_CHANGE_SUCCESSFUL)       //Wenn Display erfolgreich geändert
    {                                           //wurde
      fullscreen = true;                        //setze fullscreen auf true
    }
    else                                        //Wenn Display nicht erfolgreich
    {                                           //geändert wurde
      screenMessage = &quot;Angegebene Bildschirmeinstellungen werden &quot;
      &quot;auf diesem System nicht unterstützt !&quot;;  //Zeige folgende Message
      ShowMessage(screenMessage);
    }
  }
  Button2-&gt;Visible = true;                      //Button wird angezeigt

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Button2-&gt;Visible = false;
  if (fullscreen)                               //Wenn momentan Fullscreen
  {
    DEVMODE Modus;
    int CurrentModeNo = 0;
    while(EnumDisplaySettings(NULL, CurrentModeNo, &amp;Modus))  //Prüfen, ob einer der verfügbaren Videomodi die
    {                                                        // neuen Einstellungen unterstützt
      if (Modus.dmBitsPerPel == (DWORD)NC &amp;&amp; Modus.dmPelsHeight == (DWORD)NH &amp;&amp; Modus.dmPelsWidth == (DWORD)NW)
      {
        break;
      }
      CurrentModeNo++;
    }
    fullscreen = false;                         //Kein Fullscreen mehr
  }

  //Nun noch die standart größen der Form, wieder in die Mitte setzten und den Border
  //auf bsSingle zurück setzten, damit wir die Titelleiste sehen
  Form1-&gt;Width = 800;
  Form1-&gt;Height = 600;
  Form1-&gt;Left = (Screen-&gt;Width - 800) / 2;
  Form1-&gt;Top = (Screen-&gt;Height - 600) / 2;
  Form1-&gt;BorderStyle = bsSingle;
}
//---------------------------------------------------------------------------
bool OsWinNt(void) //Überprüfung, ob es ein NTsystem ist, wenn ja wird true zurückgegeben
{
  OSVERSIONINFO stVerInfo;
  stVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&amp;stVerInfo);
  return (stVerInfo.dwPlatformId==VER_PLATFORM_WIN32_NT);
}
</code></pre>
<p>ich hoffe er ist ausreichend kommentiert...<br />
im Prinzip macht der Code nix anderes als die Form1 im Fullscreen anzuzeigen und wenn man dann auf den Button klickt, der erst dann erscheint... kommt man wieder in den Window-mode...</p>
<p>Nun ist das Problem, dass er einfach nich in den Fullscreenmode geht... er ändert meine Screengröße einfach nich ab...<br />
Wenn ich die OS-Überprüfung und die Frequenz-Überprüfung rausnehm, dann geht er zwar in den Fullscreenmode, aber behält dann die größe 800*600 bei... also muss ich von Hand meine Einstellung wieder machen...<br />
Für jede Hilfe wär ich dankbar... wenn ich irgendwas forenregeltechnisches Falsch gemacht hab, bidde daraufhinweisen...</p>
<p>mfg mck...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671075</guid><dc:creator><![CDATA[mck]]></dc:creator><pubDate>Sat, 11 Dec 2004 18:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sat, 11 Dec 2004 18:20:05 GMT]]></title><description><![CDATA[<p>Wäre nett, wenn du uns auch noch sagst, was nicht funktioniert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/671084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671084</guid><dc:creator><![CDATA[Gast*649237]]></dc:creator><pubDate>Sat, 11 Dec 2004 18:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sat, 11 Dec 2004 18:44:55 GMT]]></title><description><![CDATA[<p>Nett wäre auch, wenn du nochmal erklärst, was du damit eigentlich vorhast. Ich verstehe z.B. nicht, was das mit dem Umschalten der Auflösung soll.</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  Top = 0;
  Left = 0;
  Width = Screen-&gt;Width;
  Height = Screen-&gt;Height;
  BorderStyle = bsNone;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Top = 100;
  Left = 100;
  Width = 640;
  Height = 480;
  BorderStyle = bsSingle;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Fertig ist die FullScreen-Form inklusive &quot;Exit&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671115</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sat, 11 Dec 2004 18:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sun, 12 Dec 2004 01:27:45 GMT]]></title><description><![CDATA[<p>Erstma thx für deine schnelle Antwort...</p>
<p>das Problem ist, dass er überhaupt nicht in den Fullscreenmode geht... also er ändert nicht die Auflösung des Users. Dein Code ändert ja die Form... aber ich möcht nich die Form an den User anpassen, sondern den User an die Form...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671363</guid><dc:creator><![CDATA[mck]]></dc:creator><pubDate>Sun, 12 Dec 2004 01:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sun, 12 Dec 2004 08:44:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>also er ändert nicht die Auflösung des Users. Dein Code ändert ja die Form... aber ich möcht nich die Form an den User anpassen, sondern den User an die Form</p>
</blockquote>
<p>Die Auflösung des Users? Meinst du die Auflösung des Desktops? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671401</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 12 Dec 2004 08:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sun, 12 Dec 2004 09:02:07 GMT]]></title><description><![CDATA[<p>die Auflösung zu verändern würd ich mir wirklich gut überlegen.<br />
Wenn der User ein paar Icons ganz rechts oder ganz unten am<br />
Desktop hat, kann es vorkommen, dass diese verschoben werden.<br />
Sowas find ich z.B. immer total nervig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671407</guid><dc:creator><![CDATA[Acidmrp]]></dc:creator><pubDate>Sun, 12 Dec 2004 09:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Leider mal wieder Fullscreen *duck* on Sun, 12 Dec 2004 12:21:40 GMT]]></title><description><![CDATA[<p>Jau, im Prinzip genau das...</p>
<p>Wie kann man das verschieben von Icons verhindern? Ich mein bei den meisten Spielen, die die Auflösung ändern werden ja auch keine Icons verschoben oder? Mein Programm soll nicht einfach nur die Auflöung ändern, sondern nur solange geändert lassen, bis ich wieder auf den Button1 drück...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671505</guid><dc:creator><![CDATA[mck]]></dc:creator><pubDate>Sun, 12 Dec 2004 12:21:40 GMT</pubDate></item></channel></rss>