<?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[Kann InvalidateRect folgendes verursachen?]]></title><description><![CDATA[<p>Hio,</p>
<p>ich rufe für ein fremdes Programm öfters &quot;InvalidateRect&quot; auf, da ich etwas in das Fenster &quot;male&quot; und wenn ich möchte dass es gelöscht wird mir nichts anderes eingefallen ist. Nur das Problem ist, das Programm verursacht nach einer ungewissen zeit ne hohe Prozessorauslastung (von dem ich die Fenster immer neuzeichnen lasse, es handelt sich dabei um mehrere Childfenster).</p>
<p>Gibts vielleicht noch ne andere möglichkeit was in andere Fenster zu zeichnen / und das auch nach wunsch wieder löschen zu lassen?<br />
Für Strings nutze ich &quot;TextOut&quot; und für Bilder nutze ich die Funktion &quot;StretchBlt&quot;.</p>
<p>Bin für jeden Tip dankbar.. kenne mich nur ganz wenig mit WInApi / GDI aus..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189343/kann-invalidaterect-folgendes-verursachen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 17:51:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189343.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Aug 2007 16:32:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sat, 11 Aug 2007 16:32:58 GMT]]></title><description><![CDATA[<p>Hio,</p>
<p>ich rufe für ein fremdes Programm öfters &quot;InvalidateRect&quot; auf, da ich etwas in das Fenster &quot;male&quot; und wenn ich möchte dass es gelöscht wird mir nichts anderes eingefallen ist. Nur das Problem ist, das Programm verursacht nach einer ungewissen zeit ne hohe Prozessorauslastung (von dem ich die Fenster immer neuzeichnen lasse, es handelt sich dabei um mehrere Childfenster).</p>
<p>Gibts vielleicht noch ne andere möglichkeit was in andere Fenster zu zeichnen / und das auch nach wunsch wieder löschen zu lassen?<br />
Für Strings nutze ich &quot;TextOut&quot; und für Bilder nutze ich die Funktion &quot;StretchBlt&quot;.</p>
<p>Bin für jeden Tip dankbar.. kenne mich nur ganz wenig mit WInApi / GDI aus..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342807</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sat, 11 Aug 2007 16:42:48 GMT]]></title><description><![CDATA[<p>könntest ja WM_PAINT an das window senden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342814</guid><dc:creator><![CDATA[Script-Styler]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sat, 11 Aug 2007 17:53:56 GMT]]></title><description><![CDATA[<p>WM_PAINT täte ich nie selbst senden.</p>
<p>Kannste nicht evtl. nen transparentes Fenster (WS_EX_LAYERED) über das Fremdfenster legen und darin zeichnen statt direkt ins Fremdfenster?</p>
<p>Ansonsten versuch mal bei InvalidateRect() das RECT welches du verändert hast anzugeben, mit ein bisschen Glück beachtet die Anwendung das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342863</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sat, 11 Aug 2007 17:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sat, 11 Aug 2007 21:54:00 GMT]]></title><description><![CDATA[<p>Ähm, eigentlich sollte es, bei sauberer Programmierung, nicht zu hoher Prozessorauslastung kommen. Zeig doch mal Deine Malerei (also den Code <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/1342972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342972</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 11 Aug 2007 21:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sat, 11 Aug 2007 21:55:01 GMT]]></title><description><![CDATA[<p>Hehe, normal malt man auch nicht in fremden Fenstern rum <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=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342974</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sat, 11 Aug 2007 21:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sun, 12 Aug 2007 00:56:55 GMT]]></title><description><![CDATA[<p>Ok ich poste hier mal meine betreffenden Methoiden aus der DLL, die von Java benutzt wird.<br />
Die erste Funktion &quot;paint&quot; malt ein Bildchen (wird von der hdd geladen) in das fremde Fenster an Position x,y. Der String ist der Path von der Datei.<br />
Die Funktion writeSth schreibt einen einfachen String in das Fenster..<br />
Und die Dritte löscht die Malerei wieder :).</p>
<p>Also ich schreibe ein Tool für Partypoker, mit dem (unter anderem) die Mucked Hands (Karten, mit denen ein Spieler verliert und nicht anzeigen möchte) angezeigt werden. Und Partypoker fängt irgendwann an rumzuspinnen (hohe Prozessorauslastung). Mein Tool bleibt ganz normal. Deshalb hab ich irgndwie das repaint im Verdacht, da ich das so pro Spiel 3-4 mal aufrufe. Aber im grunde dürfte das doch kein Problem sein.<br />
Die Idee mit dem transparenten Window hört sich nicht schlecht an, nur kann ich dann noch mit der Maus an gewisse Stellen klicken und erreiche damit das &quot;Fenster drunter&quot; ?</p>
<p>Danke für die Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">JNIEXPORT void JNICALL Java_MainClass_NewJFrame_paint(JNIEnv *env, jobject obj, jint handle, jint x, jint y, jdouble scale,jstring str) {
        HWND hWnd = (HWND)handle;
	const char *c_string = (*env)-&gt;GetStringUTFChars(env, str, 0);
	double scaleD =(double)scale;
	PAINTSTRUCT ps;
        HDC hdc = GetDC(hWnd); 
        HBITMAP hbm = (HBITMAP)LoadImage(
                        NULL, c_string , IMAGE_BITMAP, 
                       0,0,LR_LOADFROMFILE );
        HDC     hdcMem = CreateCompatibleDC(hdc);
        HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
        BITMAP bm;
        GetObject(hbm, sizeof(bm), &amp;bm);
	SetStretchBltMode(hdc, HALFTONE);
	SetBrushOrgEx(hdc,x,y,NULL);
StretchBlt(hdc,x,y,bm.bmWidth*scaleD,bm.bmHeight*scaleD,hdcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);      
        SelectObject(hdcMem, hbmOld);

	DeleteObject (hbm);
	DeleteDC(hdcMem);                   
        ReleaseDC (hWnd,hdc);

}

JNIEXPORT void JNICALL Java_MainClass_NewJFrame_WriteSth(JNIEnv *env, jobject obj, jint handle, jint size, jint c1, jint c2, jint c3, jint x, jint y, jstring str ) {
	HWND h = (HWND)handle;
	const char *c_string = (*env)-&gt;GetStringUTFChars(env, str, 0);
	int l = strlen(c_string);
	HDC hdc = GetDC(h);
	HFONT font = CreateFont(size, 0, 0, 0, FW_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0, &quot;Verdana&quot;);
	SelectObject(hdc,font);
	SetBkMode(hdc, TRANSPARENT);
	COLORREF color = RGB(c1,c2,c3);
	SetTextColor(hdc,color);
	TextOut(hdc,x,y,c_string,l);
	ReleaseDC(h, hdc); 
}

JNIEXPORT void JNICALL Java_MainClass_NewJFrame_RepaintWindow(JNIEnv *env, jobject obj, jint handle) {

	HWND h = (HWND)handle;
	InvalidateRect(h,NULL,FALSE); 

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1343018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343018</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 12 Aug 2007 00:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sun, 12 Aug 2007 01:12:31 GMT]]></title><description><![CDATA[<p>Kann mir auf die Schnelle auch nicht erklären, warum 3-4 Aufrufe pro Spiel ein Problem verursachen sollen.<br />
Aber die mit CreateFont () erzeugte Schrift in der Funktion &quot;Java_MainClass_NewJFrame_WriteSth ()&quot; solltest Du nach Gebrauch wieder freigeben :</p>
<pre><code class="language-cpp">...
 DeleteObject (font);
 ReleaseDC    (h, hdc);
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1343020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343020</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 12 Aug 2007 01:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sun, 12 Aug 2007 09:01:34 GMT]]></title><description><![CDATA[<p>Lumpeh schrieb:</p>
<blockquote>
<p>Die Idee mit dem transparenten Window hört sich nicht schlecht an, nur kann ich dann noch mit der Maus an gewisse Stellen klicken und erreiche damit das &quot;Fenster drunter&quot; ?</p>
</blockquote>
<p>Ja das geht. Bei WS_EX_LAYERED sind transparente Stellen glaube ich sogar standardmässig &quot;durchklickbar&quot;, ansonsten muss man glaube ich nur WM_NCHITTEST oder sowas abfangen und entsprechenden Rückgabewert liefern.</p>
<p>Die java-app könnte dir allerdings probs machen, Java zeichnet ihren Kram glaube ich gerne mit DirectX...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343057</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 12 Aug 2007 09:01:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sun, 12 Aug 2007 09:48:55 GMT]]></title><description><![CDATA[<p>also das Fenster, auf das ich daann das transparente Teil drüberklicken würde, wäre ja das Pokerfenster, und das ist mit C++ oder sowas geschrieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>gibts irgendwo ein guites tutorial / beispiel für soetwas? Das Fenster dürfte dann auch keine &quot;ränder&quot; usw haben, man dürfte dann garnichts davon sehen :).<br />
Ich hab in C noch nie ein Fenster &quot;erschaffen&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> und das muss dann ja auch alles in die DLL..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343078</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 12 Aug 2007 09:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Sun, 12 Aug 2007 12:15:17 GMT]]></title><description><![CDATA[<p>ich hab jetzt hier wohl ein ganz gutes Tutorial gefunden, um ein simples fenster zu zeichnen:</p>
<p><a href="http://sig9.com/articles/c-window-howto" rel="nofollow">http://sig9.com/articles/c-window-howto</a></p>
<p>was muss ich jaetzt dort noch verändern, damit mein Fenster wirklich komplett durchsichtig / durcklickbar ist? Ich will auch, dass das Fenster keine Ränder usw, es soll einfach komplett durchsichtig sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>wobei ich grade überlege.. ich möchte ja etwas auf das Fenster draufzeichnen, das soll natürlich nicht durchsichtig sein.. hmm<br />
es soll nur alles was nicht belegt ist, durchsichtig sein, also was bei einem normalen Fenster eben so &quot;grau&quot; ist..<br />
wie geht denn das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343140</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 12 Aug 2007 12:15:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kann InvalidateRect folgendes verursachen? on Mon, 13 Aug 2007 15:42:18 GMT]]></title><description><![CDATA[<p>WS_POPUP als Fensterstil erzeugt ein Fenster ohne Rahmen und ohne Titelzeile<br />
Ab Win2k gibts für Transparenz WS_EX_LAYERED (1. Parameter bei CreateWindowEx)<br />
Was da genau gemacht werden muss/kann steht in der msdn...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343808</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 13 Aug 2007 15:42:18 GMT</pubDate></item></channel></rss>