<?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[Mausgesten mit dem BCB]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Nach dem ich einige Zeit lang nach einer Implementierung von Mausgesten mit dem BCB gesucht habe, habe ich tatsächlich etwas gefunden (<a href="http://delphi.icm.edu.pl" rel="nofollow">http://delphi.icm.edu.pl</a> -&gt; &quot;BC++ B 5.0&quot; -&gt; &quot;Apps WITH Sources&quot;) und wollte euch das nicht vorenthalten:</p>
<pre><code class="language-cpp">int TForm1::GetGestureDirection(TPoint start, int X, int Y)
{
	// Rückgabewert entspricht Ziffer auf Nummernpad
	const dist = 20;
	int dx = X - start.x;
	int dy = Y - start.y;
	if(fabs(dx) &lt; dist &amp;&amp; fabs(dy) &lt; dist)
		return 0;

	if(fabs(dx) &lt; fabs(dy / 2))
	{
		// Vertikale Bewegung
		if(dy &gt; 0) return 2;
		if(dy &lt; 0) return 8;
	}

	if(fabs(dy) &lt; fabs(dx / 2))
	{
		// Horizontale Bewegung
		if(dx &gt; 0) return 6;
		if(dx &lt; 0) return 4;
	}

	// Diagonale Bewegung
	if(dx &gt; 0 &amp;&amp; dy &gt; 0) return 3;
	if(dx &gt; 0 &amp;&amp; dy &lt; 0) return 9;
	if(dx &lt; 0 &amp;&amp; dy &gt; 0) return 1;
	if(dx &lt; 0 &amp;&amp; dy &lt; 0) return 7;

	return 0;
}

void __fastcall TForm1::Form1MouseDown(TObject *Sender,
			TMouseButton Button, TShiftState Shift, int X, int Y)
{
	if(Button == mbRight)
	{
		prepgesture = true;
		startgesture.x = X;
		startgesture.y = Y;
		movegesture.x = X;
		movegesture.y = Y;
		gesture = &quot;&quot;;
		dirgesture = 0;
		dirrepgesture = 0;

		Canvas-&gt;MoveTo( X, Y );
		Canvas-&gt;Pen-&gt;Width = 3;
		Canvas-&gt;Pen-&gt;Color = clRed;
	}
}

void __fastcall TForm1::Form1MouseMove(TObject *Sender, TShiftState Shift,
			int X, int Y)
{
	if(prepgesture)
	{
		Canvas-&gt;LineTo(X, Y);
		int dir = GetGestureDirection(movegesture, X, Y);
		if(dir &gt; 0)
		{
			if(dir != dirgesture)
			{
				if(dirrepgesture == 0)
					gesture.Delete(gesture.Length(), 1);

				gesture += AnsiString(dir);
				dirgesture = dir;
				dirrepgesture = 0;
			}
			else
				dirrepgesture++;

			movegesture.x = X;
			movegesture.y = Y;
		}
	}
}

void __fastcall TForm1::Form1MouseUp(TObject *Sender, TMouseButton Button,
			TShiftState Shift, int X, int Y)
{
	if(Button == mbRight)
	{
		prepgesture = false;
		Invalidate();
		if(gesture != &quot;&quot;)
		{
			// Maus runter
			if(gesture == &quot;2&quot;) 
				MessageBeep(0);
			// Maus runter, rechts
			if(gesture == &quot;26&quot;)
				Close();
		}
	}
}
</code></pre>
<p>Vielleicht ist das sogar etwas für die FAQ. <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/123526/mausgesten-mit-dem-bcb</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 13:48:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123526.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Oct 2005 17:54:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Mon, 17 Oct 2005 17:54:59 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Nach dem ich einige Zeit lang nach einer Implementierung von Mausgesten mit dem BCB gesucht habe, habe ich tatsächlich etwas gefunden (<a href="http://delphi.icm.edu.pl" rel="nofollow">http://delphi.icm.edu.pl</a> -&gt; &quot;BC++ B 5.0&quot; -&gt; &quot;Apps WITH Sources&quot;) und wollte euch das nicht vorenthalten:</p>
<pre><code class="language-cpp">int TForm1::GetGestureDirection(TPoint start, int X, int Y)
{
	// Rückgabewert entspricht Ziffer auf Nummernpad
	const dist = 20;
	int dx = X - start.x;
	int dy = Y - start.y;
	if(fabs(dx) &lt; dist &amp;&amp; fabs(dy) &lt; dist)
		return 0;

	if(fabs(dx) &lt; fabs(dy / 2))
	{
		// Vertikale Bewegung
		if(dy &gt; 0) return 2;
		if(dy &lt; 0) return 8;
	}

	if(fabs(dy) &lt; fabs(dx / 2))
	{
		// Horizontale Bewegung
		if(dx &gt; 0) return 6;
		if(dx &lt; 0) return 4;
	}

	// Diagonale Bewegung
	if(dx &gt; 0 &amp;&amp; dy &gt; 0) return 3;
	if(dx &gt; 0 &amp;&amp; dy &lt; 0) return 9;
	if(dx &lt; 0 &amp;&amp; dy &gt; 0) return 1;
	if(dx &lt; 0 &amp;&amp; dy &lt; 0) return 7;

	return 0;
}

void __fastcall TForm1::Form1MouseDown(TObject *Sender,
			TMouseButton Button, TShiftState Shift, int X, int Y)
{
	if(Button == mbRight)
	{
		prepgesture = true;
		startgesture.x = X;
		startgesture.y = Y;
		movegesture.x = X;
		movegesture.y = Y;
		gesture = &quot;&quot;;
		dirgesture = 0;
		dirrepgesture = 0;

		Canvas-&gt;MoveTo( X, Y );
		Canvas-&gt;Pen-&gt;Width = 3;
		Canvas-&gt;Pen-&gt;Color = clRed;
	}
}

void __fastcall TForm1::Form1MouseMove(TObject *Sender, TShiftState Shift,
			int X, int Y)
{
	if(prepgesture)
	{
		Canvas-&gt;LineTo(X, Y);
		int dir = GetGestureDirection(movegesture, X, Y);
		if(dir &gt; 0)
		{
			if(dir != dirgesture)
			{
				if(dirrepgesture == 0)
					gesture.Delete(gesture.Length(), 1);

				gesture += AnsiString(dir);
				dirgesture = dir;
				dirrepgesture = 0;
			}
			else
				dirrepgesture++;

			movegesture.x = X;
			movegesture.y = Y;
		}
	}
}

void __fastcall TForm1::Form1MouseUp(TObject *Sender, TMouseButton Button,
			TShiftState Shift, int X, int Y)
{
	if(Button == mbRight)
	{
		prepgesture = false;
		Invalidate();
		if(gesture != &quot;&quot;)
		{
			// Maus runter
			if(gesture == &quot;2&quot;) 
				MessageBeep(0);
			// Maus runter, rechts
			if(gesture == &quot;26&quot;)
				Close();
		}
	}
}
</code></pre>
<p>Vielleicht ist das sogar etwas für die FAQ. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/894414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/894414</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Mon, 17 Oct 2005 17:54:59 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Tue, 18 Oct 2005 07:23:38 GMT]]></title><description><![CDATA[<p>was mach ich damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/894742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/894742</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 18 Oct 2005 07:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Tue, 18 Oct 2005 07:33:03 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Mausgesten" rel="nofollow">http://de.wikipedia.org/wiki/Mausgesten</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/894764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/894764</guid><dc:creator><![CDATA[faq.]]></dc:creator><pubDate>Tue, 18 Oct 2005 07:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Wed, 19 Oct 2005 08:39:06 GMT]]></title><description><![CDATA[<p>Ich habe mir die MouseGestures.zip dort mal geladen, aber verstehe 0 was die exe nun machen soll. Könntest das bitte ein wenig noch erklären?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895873</guid><dc:creator><![CDATA[mouse]]></dc:creator><pubDate>Wed, 19 Oct 2005 08:39:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Wed, 19 Oct 2005 08:56:43 GMT]]></title><description><![CDATA[<p>Mit den Mausgesten kann man z.B. die Steuerung von Tabs in einem TabControl übernehmen. Ähnlich wie das Opera oder Firefox bieten.</p>
<p>In der Funktion Form1MouseUp() erfolgt erst die eigentliche Ausführung einer Aktion, die vorher durch GetGestureDirection() ermittelt wurde. Angenommen du hälst die rechte Maustaste und ziehst die Maus dann erst nach unten und dann nach rechts, dann wäre das Ergebnis aus dem Num-Pad 2 (runter) und 6 (rechts). die 2 und 6 werden in einen String geschrieben und dann verglichen. Also würde dieser Bewegung &quot;26&quot; im String stehen. In Form1MouseUp() führt der String &quot;26&quot; dann zu einer Aktion, nämlich dem Schließen der Form. Das ist eigentlich das ganze Prinzip dahinter.</p>
<p>Am besten baust du in Form1MouseUp() noch ein paar weitere Abfragen ab, die irgendwelche Funktionen ausführen, wie z.B. eine Messagebox werfen oder einen Sound abspielen. Dann findest du schon heraus, was macn da alles machen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895887</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Wed, 19 Oct 2005 08:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Wed, 19 Oct 2005 09:11:31 GMT]]></title><description><![CDATA[<p>Ich Döddel habe die ganze Zeit linke Maustaste benutzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ja nun macht das mit rechter Maustaste einen Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Black&amp;White <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>
]]></description><link>https://www.c-plusplus.net/forum/post/895897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895897</guid><dc:creator><![CDATA[mouse]]></dc:creator><pubDate>Wed, 19 Oct 2005 09:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mausgesten mit dem BCB on Fri, 27 Apr 2007 16:44:42 GMT]]></title><description><![CDATA[<p>nett nett <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1274745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274745</guid><dc:creator><![CDATA[carstenbauer]]></dc:creator><pubDate>Fri, 27 Apr 2007 16:44:42 GMT</pubDate></item></channel></rss>