<?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[Screenshot &amp;quot;transparenter&amp;quot; Dialoge]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hätt da gern mal ein Problem.<br />
Und zwar geht es um die Transparenz von Dialogen. Meine Frage dazu im Anschluß nach dem Quellcode.</p>
<pre><code>BOOL CMyDialog::SetWndTransparency(HWND x_hwndWindow, BYTE x_nFactor)
{
  typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
  PSLWA pSetLayeredWindowAttributes;
  HMODULE hDLL = NULL;
  BOOL bRet = FALSE;

  SetWindowLong(x_hwndWindow, GWL_EXSTYLE,
        GetWindowLong(x_hwndWindow, GWL_EXSTYLE) | WS_EX_LAYERED);
  hDLL = LoadLibrary (&quot;user32&quot;);

  if(hDLL != NULL)
  {
    pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,&quot;SetLayeredWindowAttributes&quot;);

    if (pSetLayeredWindowAttributes != NULL)
    {
      /**
      * Second parameter RGB(255,255,255) sets the colorkey to white
      * LWA_COLORKEY flag indicates that color key is valid
      * LWA_ALPHA indicates that ALphablend parameter (factor)
      * is valid
      */
      pSetLayeredWindowAttributes (x_hwndWindow, 0, x_nFactor, LWA_ALPHA);
      bRet = TRUE;
    }
    else
    {
      bRet = FALSE;
    }

    FreeLibrary(hDLL);
  }
  else
  {
    bRet = FALSE;
  }

  return bRet;
}
</code></pre>
<p>Meine Problem dazu:<br />
Unter XP läuft alles Problemlos. Wird als Faktor (BYTE x_nFactor) 0 übergeben, soll der Dialog vollständig angezeigt werden. Auch Screenshot's über [DRUCK] oder Programme wie &quot;Hypersnap DX&quot; funktionieren problemlos.</p>
<p>Unter Windows 2000 sind meine Dialoge, welche über diese Funktion die Transparenz gesetzt bekommen haben, allerdings für Screenshot's generell &quot;unsichtbar&quot;. Heißt also, ich kann von meiner Applikation einen Screenshot erzeugen und bekomme als Ergebnis meinen Desktop.</p>
<p>Meine Frage:<br />
Welchen &quot;Bug&quot; hat Windows denn da schon wieder? Und hat einer von euch eine Idee/ ne aufzurufende Funktion, mit der ich die Dialoge auch unter Windows 2000 sichtbar bekomme? <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>Bin für jeden nützlichen Tipp dankbar ^^</p>
<p>LG<br />
Anti</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184115/screenshot-quot-transparenter-quot-dialoge</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 01:34:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184115.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Jun 2007 13:05:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Screenshot &amp;quot;transparenter&amp;quot; Dialoge on Tue, 12 Jun 2007 13:05:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hätt da gern mal ein Problem.<br />
Und zwar geht es um die Transparenz von Dialogen. Meine Frage dazu im Anschluß nach dem Quellcode.</p>
<pre><code>BOOL CMyDialog::SetWndTransparency(HWND x_hwndWindow, BYTE x_nFactor)
{
  typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
  PSLWA pSetLayeredWindowAttributes;
  HMODULE hDLL = NULL;
  BOOL bRet = FALSE;

  SetWindowLong(x_hwndWindow, GWL_EXSTYLE,
        GetWindowLong(x_hwndWindow, GWL_EXSTYLE) | WS_EX_LAYERED);
  hDLL = LoadLibrary (&quot;user32&quot;);

  if(hDLL != NULL)
  {
    pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,&quot;SetLayeredWindowAttributes&quot;);

    if (pSetLayeredWindowAttributes != NULL)
    {
      /**
      * Second parameter RGB(255,255,255) sets the colorkey to white
      * LWA_COLORKEY flag indicates that color key is valid
      * LWA_ALPHA indicates that ALphablend parameter (factor)
      * is valid
      */
      pSetLayeredWindowAttributes (x_hwndWindow, 0, x_nFactor, LWA_ALPHA);
      bRet = TRUE;
    }
    else
    {
      bRet = FALSE;
    }

    FreeLibrary(hDLL);
  }
  else
  {
    bRet = FALSE;
  }

  return bRet;
}
</code></pre>
<p>Meine Problem dazu:<br />
Unter XP läuft alles Problemlos. Wird als Faktor (BYTE x_nFactor) 0 übergeben, soll der Dialog vollständig angezeigt werden. Auch Screenshot's über [DRUCK] oder Programme wie &quot;Hypersnap DX&quot; funktionieren problemlos.</p>
<p>Unter Windows 2000 sind meine Dialoge, welche über diese Funktion die Transparenz gesetzt bekommen haben, allerdings für Screenshot's generell &quot;unsichtbar&quot;. Heißt also, ich kann von meiner Applikation einen Screenshot erzeugen und bekomme als Ergebnis meinen Desktop.</p>
<p>Meine Frage:<br />
Welchen &quot;Bug&quot; hat Windows denn da schon wieder? Und hat einer von euch eine Idee/ ne aufzurufende Funktion, mit der ich die Dialoge auch unter Windows 2000 sichtbar bekomme? <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>Bin für jeden nützlichen Tipp dankbar ^^</p>
<p>LG<br />
Anti</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303990</guid><dc:creator><![CDATA[Antivirus]]></dc:creator><pubDate>Tue, 12 Jun 2007 13:05:57 GMT</pubDate></item></channel></rss>