<?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[OnMouseWheel: Ist Maus im Fenster?]]></title><description><![CDATA[<p>Tag,</p>
<p>Ich habe hier folgenden Code, der erreichen soll, dass ich innerhalb meines GLUT-Fensters rein- bzw. rauszoomen kann:</p>
<pre><code class="language-cpp">BOOL COpenGLView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
	if (/*????*/)
	{
		m_zoom += (GLfloat) zDelta/120;
		LookAtScene();
		RenderScene();
	}

	return __super::OnMouseWheel(nFlags, zDelta, pt);
}
</code></pre>
<p>Ich würde nun gerne hinzufügen, dass ich nur zoomen möchte, wenn der Mauszeiger innerhalb meines GLUT-Fensters ist. Wie sollte ich darum diese if-Bedingung formulieren? Kann ich dass über <strong>pt</strong> erreichen, in dem ich überprüfe, wo sich die Maus gerade befindet, oder geht das einfacher?</p>
<p>H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165037/onmousewheel-ist-maus-im-fenster</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 05:21:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165037.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Nov 2006 03:27:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OnMouseWheel: Ist Maus im Fenster? on Wed, 15 Nov 2006 03:27:41 GMT]]></title><description><![CDATA[<p>Tag,</p>
<p>Ich habe hier folgenden Code, der erreichen soll, dass ich innerhalb meines GLUT-Fensters rein- bzw. rauszoomen kann:</p>
<pre><code class="language-cpp">BOOL COpenGLView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
	if (/*????*/)
	{
		m_zoom += (GLfloat) zDelta/120;
		LookAtScene();
		RenderScene();
	}

	return __super::OnMouseWheel(nFlags, zDelta, pt);
}
</code></pre>
<p>Ich würde nun gerne hinzufügen, dass ich nur zoomen möchte, wenn der Mauszeiger innerhalb meines GLUT-Fensters ist. Wie sollte ich darum diese if-Bedingung formulieren? Kann ich dass über <strong>pt</strong> erreichen, in dem ich überprüfe, wo sich die Maus gerade befindet, oder geht das einfacher?</p>
<p>H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174847</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Wed, 15 Nov 2006 03:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to OnMouseWheel: Ist Maus im Fenster? on Wed, 15 Nov 2006 07:26:54 GMT]]></title><description><![CDATA[<p>Du bekommst diese WM_MOUSEWHEEL nur wenn das Fenster den Focus/Capture oder eben wenn der Mauszeiger über Deiner Applikation ist.</p>
<p>pt sind die relativen Screen Koordinaten.</p>
<p>Also um ganz sicher zu gehen:</p>
<pre><code class="language-cpp">CRect rect;
GetClientRect(rect);
if (rect.PtInRect(pt))
{
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1174882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174882</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Nov 2006 07:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to OnMouseWheel: Ist Maus im Fenster? on Wed, 15 Nov 2006 07:33:23 GMT]]></title><description><![CDATA[<p>Hallo Martin,</p>
<p>danke für die Antwort, aber da scheint etwas nicht zu stimmen.</p>
<p>1.) Ich bekomme diese WM_MOUSEWHEEL auch, wenn ich ausserhalb meines Childfestern bin, ja sogar, wenn ich ausserhalb des Parentfensters bin.</p>
<p>2.) Benutze ich den von dir vorgeschlagenen Code, dann bekomme ich WM_MOUSEWHEEL gar nicht mehr.</p>
<pre><code class="language-cpp">BOOL COpenGL_MDIView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
	CRect rect;
	GetClientRect(rect);

	if (rect.PtInRect(pt))
	{ 
		m_zoom += (GLfloat) zDelta/120;
		if (m_zoom &lt; 0.0f) m_zoom = 0.0f;

		LookAtScene();
		RenderScene();
	}

	return __super::OnMouseWheel(nFlags, zDelta, pt);
}
</code></pre>
<p>Woran liegt das jetzt?<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174889</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Wed, 15 Nov 2006 07:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to OnMouseWheel: Ist Maus im Fenster? on Wed, 15 Nov 2006 08:23:15 GMT]]></title><description><![CDATA[<p>Schon mal daran gedacht pt zu kontrollieren?<br />
Liegt er denn im rect?</p>
<p>Ansonsten besorge Dir die abosolte Fensterposition mit GetMessagePos, diese mit ScreenToClient umwandeln, dann den selben Test.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174924</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Nov 2006 08:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to OnMouseWheel: Ist Maus im Fenster? on Wed, 15 Nov 2006 08:55:23 GMT]]></title><description><![CDATA[<p>HI.</p>
<p>noch eine Frage. In der MSDN steht:</p>
<blockquote>
<p>The GetMessagePos function retrieves the cursor position for the last message retrieved by the GetMessage function.</p>
</blockquote>
<p>Du aber schreibst:</p>
<blockquote>
<p>besorge Dir die abosolte Fensterposition mit GetMessagePos</p>
</blockquote>
<p>Widerspricht sich das nicht? Du schreibst vom Fenster, in der MSDN aber gehts um die Cursorposition.</p>
<p>H.W.</p>
<p>P.S.:GetMessagePos() und pt haben die selben Koordinaten, die absolute Cursorposition auf dem Monitor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174953</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Wed, 15 Nov 2006 08:55:23 GMT</pubDate></item></channel></rss>