<?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[Anklicken einer Editbox = kompletten Text selektieren]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Editbox so einrichten, dass wenn der User sie anklickt zunächst der gesamte Text markiert wird. Erst beim zweiten Klick soll der Cursor (Caret) an die entsprechende Stelle positioniert werden. Ich habe es mit Behandlung von SETFOCUS probiert, allerdings funktioniert das nur, wenn ich die Editbox über den Tabulator anwähle. Klicke ich mit der Maus hinein, wird unmittelbar der Cursor an die entsprechende Stelle gesetzt.</p>
<p>Eine Idee, die ich hatte, war, auf LBUTTONDOWN zu reagieren, wenn die Linke Maustaste innerhalb des Controls gedrückt wird und mir zusätzlich über ein Flag (bzw. einen Count), das (der) bei KILLFOCUS zurückgesetzt wird, zu merken, ob es &quot;der erste Klick&quot; in das Feld war. Aber zuvor wollte ich mal nachfragen, ob man das nicht weniger kompliziert haben kann.</p>
<p>Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173977/anklicken-einer-editbox-kompletten-text-selektieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 15:08:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173977.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Feb 2007 18:23:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Wed, 21 Feb 2007 18:27:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Editbox so einrichten, dass wenn der User sie anklickt zunächst der gesamte Text markiert wird. Erst beim zweiten Klick soll der Cursor (Caret) an die entsprechende Stelle positioniert werden. Ich habe es mit Behandlung von SETFOCUS probiert, allerdings funktioniert das nur, wenn ich die Editbox über den Tabulator anwähle. Klicke ich mit der Maus hinein, wird unmittelbar der Cursor an die entsprechende Stelle gesetzt.</p>
<p>Eine Idee, die ich hatte, war, auf LBUTTONDOWN zu reagieren, wenn die Linke Maustaste innerhalb des Controls gedrückt wird und mir zusätzlich über ein Flag (bzw. einen Count), das (der) bei KILLFOCUS zurückgesetzt wird, zu merken, ob es &quot;der erste Klick&quot; in das Feld war. Aber zuvor wollte ich mal nachfragen, ob man das nicht weniger kompliziert haben kann.</p>
<p>Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232807</guid><dc:creator><![CDATA[Nanuq]]></dc:creator><pubDate>Wed, 21 Feb 2007 18:27:23 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Wed, 21 Feb 2007 21:01:32 GMT]]></title><description><![CDATA[<p>Das geht einfacher.<br />
Bau einen LButtonDown Handler. Wenn der Handler angesprungen wird, dann prüfst Du ob das aktuelle Control den Focus hat und setzt ein Flag. Dan führst Du den default aus, was dann den Focus setzt. Anschließend SetSel aufrufen wen es den Focus frisch bekommen hat.</p>
<p>Pseudocode:</p>
<pre><code class="language-cpp">void CMyEdit::OnLButtonDown(...)
{
    bool bHasFocus = GetFocus()==this;
    Default();
    if (!bHasFocus)
        SetSel(0,GetWindowTextLength());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1232887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232887</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 21 Feb 2007 21:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 06:21:34 GMT]]></title><description><![CDATA[<p>Nachdem ich angefangen hatte meine oben beschriebene Idee umzusetzen, habe ich festgestellt, dass es für CEdit kein WM_LBUTTONDOWN gibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> und habe mir deshalb (wie du es mit CMyEdit ja auch vorschlägst) eine eigene Editbox-Klasse von CEdit abgeleitet.</p>
<p>Der Rest deines Vorschlag ist clever (hat funktioniert)! Vielen Dank für den Tip!</p>
<p>Anschließend wusste ich dann zwar zunächst nicht, wie ich für meine eigene Editbox-Klasse DDX verwende, da ich das Control mittels Create() (und nicht im Dialog-Editor) erzeugt hatte.<br />
Schließlich habe ich aber SubclassDlgItem() gefunden und damit erreicht, was ich wollte <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/1232931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232931</guid><dc:creator><![CDATA[Nanuq]]></dc:creator><pubDate>Thu, 22 Feb 2007 06:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 07:22:39 GMT]]></title><description><![CDATA[<p>Wieso hast du das per Create gemacht?<br />
Wenn du weiterhin mit dem Dialog-Editor arbeiten möchtest, musst du nur eine Controlvariable für das Edit anlegen lassen und dann den Typ in deine eigene Klasse ändern.<br />
Das funktioniert für jedes selbstgebastelte Control. <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/1232946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232946</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 22 Feb 2007 07:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 07:34:31 GMT]]></title><description><![CDATA[<p>So habe ich es am Ende auch gemacht, allerdings dachte ich, ich müsste zusätzlich CMyEdit::SubclassDlgItem() aufrufen, damit es funktioniert...<br />
Oder ist das überflüssig? Muss ich vielleicht später noch einmal ausprobieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232950</guid><dc:creator><![CDATA[Nanuq]]></dc:creator><pubDate>Thu, 22 Feb 2007 07:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 07:38:23 GMT]]></title><description><![CDATA[<p>Ich glaube, das ist überflüssig.<br />
Ich habe diese Zeile nichtmal in meinem Projekt (wo ich sowas oft mache) nicht finden können.<br />
<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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232954</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 22 Feb 2007 07:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 08:15:53 GMT]]></title><description><![CDATA[<p>Das einfachste ist den Classwizard ein normales CEdit Control anbinden zu lassen.<br />
Anschließend ändert man in der Header-Datei nur den Klassennamen von CEdit auf CMyEdit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232978</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 22 Feb 2007 08:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Thu, 22 Feb 2007 20:08:14 GMT]]></title><description><![CDATA[<p>Ok, habe SubclassDlgItem() wieder herausgenommen, alles funktioniert wie gehabt, es scheint also tatsächlich überflüssig zu sein. Danke noch mal für die Infos!</p>
<p>P.S.:<br />
Ich hatte das aus &quot;Kruglinski, Shepherd, Wingo: Inside Visual C++ 6.0&quot;.<br />
Dort heißt es (kurz gefasst), man müsse folgendermaßen vorgehen:<br />
1. Control im Dialog-Editor hinzufügen.<br />
2. Eigene Klasse von gewünschtem Control ableiten.<br />
3. Membervariable vom Typ der eigenen Klasse zur Dialogklasse hinzufügen.<br />
4. Wenn mit einer Dialogfeldklasse gearbeitet wird: einfügen von</p>
<pre><code class="language-cpp">m_myControl.SubclassDlgItem(IDC_MYCONTROL, this);
</code></pre>
<p>in OnInitDialog().<br />
5. Wenn mit einer Formularansichtsklasse gearbeitet wird: einfügen von</p>
<pre><code class="language-cpp">if(m_myControl.m_hWnd == NULL)
    m_myControl.SubclassDlgItem(IDC_MYCONTROL, this),
</code></pre>
<p>in OnInitUpdate().</p>
<p>Außerdem wird auf die &quot;MFC Technical Note #14&quot; verwiesen. Wirklich klar geworden ist mir der Sinn und Zweck von SubclassDlgItem() beim Lesen allerdings nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233640</guid><dc:creator><![CDATA[Nanuq]]></dc:creator><pubDate>Thu, 22 Feb 2007 20:08:14 GMT</pubDate></item><item><title><![CDATA[Reply to Anklicken einer Editbox = kompletten Text selektieren on Fri, 23 Feb 2007 07:37:11 GMT]]></title><description><![CDATA[<p>Ein Fenster das durch Windows erzeugt wurde hat mit Deiner Klasse und den dort festegelegten Handlern nichts zu tun. Zudem wird das Control ja durch den Ressource-Editor und die Diaog Routinen angelegt und erzeugt.</p>
<p>SubclassDlgItem verbindet nun dieses Control mit der Fenster-Prozedur (Klassen-Objekt), das Du angelegt hast. Nur so wird Deine Klasse mit _diesem_ Fenster auch verwendet!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233839</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 23 Feb 2007 07:37:11 GMT</pubDate></item></channel></rss>