<?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[GetWindow für Resourcen?]]></title><description><![CDATA[<p>Hallo<br />
ich weiß nicht ob es schon oft gefragt wurde, aber in der FAQ steht nichts.</p>
<p>Mich interessiert wie man einen Pointer zu einem Window aus der Resourcen bekommt.<br />
z.b. IDC_Edit1 also ein Edit-Feld.</p>
<pre><code class="language-cpp">void CSite1::OnKillfocusPclients() 
{
   CWnd wnd;

   UpdateData(TRUE);     // Feld ---&gt; Var
   if (CSave::sbyMaxPlayer &gt; m_byPClients) CSave::sbyPClients = m_byPClients;  //Checkt ob MaxPlayer 
   else																		   //höher als Privat Clients ist		
   {
       MessageBox (&quot;Max Players must be higher than Privat Clients.&quot;,&quot;Error&quot;,MB_OK | MB_APPLMODAL | MB_ICONSTOP);
       m_byPClients = 0;
	   UpdateData(FALSE);  //Var ---&gt; Feld
	   //wnd.GetWindow(IDC_PCLIENTS);   // Hier sollte ich dein Pointer bekommen
	   //wnd.SetFocus();                // und hier sollte der Focus wieder auf das IDC_PCLIENTS gesetzt werden
   }
</code></pre>
<p>Wenn ich das so laufen lasse stürtz das Programm ab. Deshalb hab ich es ausgeklammert. Hier heißt mein Edit-Fenster IDC_PCLIENTS.<br />
Kann mir einer helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/60168/getwindow-für-resourcen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 03 Jun 2026 06:50:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/60168.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Jan 2004 17:59:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GetWindow für Resourcen? on Fri, 02 Jan 2004 17:59:57 GMT]]></title><description><![CDATA[<p>Hallo<br />
ich weiß nicht ob es schon oft gefragt wurde, aber in der FAQ steht nichts.</p>
<p>Mich interessiert wie man einen Pointer zu einem Window aus der Resourcen bekommt.<br />
z.b. IDC_Edit1 also ein Edit-Feld.</p>
<pre><code class="language-cpp">void CSite1::OnKillfocusPclients() 
{
   CWnd wnd;

   UpdateData(TRUE);     // Feld ---&gt; Var
   if (CSave::sbyMaxPlayer &gt; m_byPClients) CSave::sbyPClients = m_byPClients;  //Checkt ob MaxPlayer 
   else																		   //höher als Privat Clients ist		
   {
       MessageBox (&quot;Max Players must be higher than Privat Clients.&quot;,&quot;Error&quot;,MB_OK | MB_APPLMODAL | MB_ICONSTOP);
       m_byPClients = 0;
	   UpdateData(FALSE);  //Var ---&gt; Feld
	   //wnd.GetWindow(IDC_PCLIENTS);   // Hier sollte ich dein Pointer bekommen
	   //wnd.SetFocus();                // und hier sollte der Focus wieder auf das IDC_PCLIENTS gesetzt werden
   }
</code></pre>
<p>Wenn ich das so laufen lasse stürtz das Programm ab. Deshalb hab ich es ausgeklammert. Hier heißt mein Edit-Fenster IDC_PCLIENTS.<br />
Kann mir einer helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/427383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427383</guid><dc:creator><![CDATA[Ovaron123]]></dc:creator><pubDate>Fri, 02 Jan 2004 17:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Fri, 02 Jan 2004 19:05:12 GMT]]></title><description><![CDATA[<p>CWnd * pWnd = GetDlgItem(IDC_xxxxx);</p>
<p>der zeiger is temporär (nur im aktuellen message-Handler gültig)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/427411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427411</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Fri, 02 Jan 2004 19:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Fri, 02 Jan 2004 19:23:53 GMT]]></title><description><![CDATA[<p>hm das funktioniert, also es gibt kein absturtz mehr, aber</p>
<p>pWnd = SetFocus();</p>
<p>scheints nicht richtig zu tun, denn der Focus, also der Cursor blinkt dann nicht auf dem Feld.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/427431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427431</guid><dc:creator><![CDATA[Ovaron123]]></dc:creator><pubDate>Fri, 02 Jan 2004 19:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Fri, 02 Jan 2004 19:32:31 GMT]]></title><description><![CDATA[<p>SetFocus kann nicht in einem OnSetFocus/OnKillFocus-Handler aufgerufen werden.</p>
<p>Hilfsmessage mit PostMessage and den Dialog schicken, und dort dann SetFocus aufrufen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/427438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427438</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Fri, 02 Jan 2004 19:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Sat, 03 Jan 2004 12:48:55 GMT]]></title><description><![CDATA[<p>Gibt es irgendwo ein Tutorial für eigene Messages?<br />
Ich suche schon über 2 Stunden nach sowas, hab aber nichts brauchbares gefunden.</p>
<p>Es geht von</p>
<p>RegisterWindowMessage();</p>
<p>bis</p>
<p>#define WMU_EDIT WM_USER+5<br />
.<br />
.<br />
GetParent()-&gt;SendMessage(WMU_EDIT, GetDlgCtrlID(), (LPARAM)this);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/427763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427763</guid><dc:creator><![CDATA[Ovaron123]]></dc:creator><pubDate>Sat, 03 Jan 2004 12:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Sat, 03 Jan 2004 12:55:54 GMT]]></title><description><![CDATA[<p>RegisterWindowMessage ist notwendig, wenn du eindeutige messages zwischen verschiedenen Anwendungen / Modulen schicken willst.</p>
<p>Ansosnten schreibt MSDN zu Windows Messages:</p>
<p>Range Meaning<br />
0..WM_USER-1 Messages reserved for use by the system.<br />
WM_USER..0x7FFF Integer messages for use by <strong>private</strong> window classes.</p>
<p>WM_APP through 0xBFFF Messages available for use by applications.<br />
==&gt; hier kannst du dich &quot;bedienen&quot; (aber aufpassen - s.u.)</p>
<p>0xC000 through 0xFFFF String messages for use by applications. (i.e. die mot RegisterWindowMessage registrierten)</p>
<p>Greater than 0xFFFF Reserved by the system for future use.</p>
<p>.....</p>
<p>Du kannst also z.B. eine Message mit</p>
<pre><code class="language-cpp">#define UWM_MYDLG_SETCTLFOCUS  WM_APP  // LPARAM = HWND
</code></pre>
<p>definieren</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesmessages/wm_user.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesmessages/wm_user.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/427768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/427768</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sat, 03 Jan 2004 12:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Sat, 03 Jan 2004 20:24:23 GMT]]></title><description><![CDATA[<p>Hm, ich trau mich ja kaum noch zu fragen aber ich verstehe das nicht.</p>
<pre><code class="language-cpp">void CSite1::OnKillfocusPclients() 
{
   CWnd* wnd = GetDlgItem(IDC_PCLIENTS);

   UpdateData(TRUE);     // Feld ---&gt; Var
   if (CSave::sbyMaxPlayer &gt; m_byPClients) CSave::sbyPClients = m_byPClients;  //Checkt ob MaxPlayer 
   else																		   //höher als Privat Clients ist		
   {
       MessageBox (&quot;Max Players must be higher than Privat Clients.&quot;,&quot;Error&quot;,MB_OK | MB_APPLMODAL | MB_ICONSTOP);
       m_byPClients = 0;
	   UpdateData(FALSE);  //Var ---&gt; Feld
	   wnd.GetDlgItem(IDC_PCLIENTS);
	   wnd-&gt;SendMessage(UWM_MYDLG_SETCTLFOCUS,0); 
   }
</code></pre>
<p>was kommt vor SendMessage hin? wnd stimmt nicht. Welches Window?<br />
Ich hab ein Diolog in mit 3 CTabctrl Dialogen.<br />
Diesen Aufruf kommt von der 1. Registerkarte CSite1.</p>
<p>Das steht in Site1.cpp -&gt; ON_MESSAGE(UWM_MYDLG_SETCTLFOCUS,OnMYDLGSETCTFOCUS)<br />
bei der Message Map.</p>
<p>Und das bei Site1.h -&gt; afx_msg void OnMYDLGSETCTFOCUS();</p>
<p>und dann noch die Funktion in Site1.cpp</p>
<pre><code class="language-cpp">void CSite1::OnMYDLGSETCTFOCUS()
{

	CWnd* wnd = GetDlgItem(IDC_PCLIENTS);
    wnd = SetFocus();

}
</code></pre>
<p>Welches CWnd muß da rein damit es die Nachricht verschickt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/428095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/428095</guid><dc:creator><![CDATA[Ovaron123]]></dc:creator><pubDate>Sat, 03 Jan 2004 20:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Sat, 03 Jan 2004 20:44:05 GMT]]></title><description><![CDATA[<p>OK, war ein bißchen kurz <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>
<ol>
<li>PostMessage statt SendMessage (das ist der eigentliche trick)</li>
<li>nicht wnd-&gt;SendMessage sondern this-&gt; (bzw. nix). Dorthin wird die Message geschickt</li>
</ol>
<p>Der Handler sollte</p>
<pre><code class="language-cpp">afx_msg LRESULT memberFxn( WPARAM, LPARAM );
</code></pre>
<p>deklariert sein</p>
<p>ausfgühlicher:<br />
SendMessage wird &quot;sofort&quot; asgeführt, PostMessage stellt die Message nur in die Queue. Wir wollen den aktuellem handler zuerst vollständig durchlaufen lassen (damit der aktuelle Fokuswechsel &quot;ferig&quot; ist und nicht mit deinem SetFocus durcheinanderkommt) ==&gt; also PostMessage</p>
<p>Die Message geht am besten an das CSitel, welches auch die KillFocus-Notification-Handler hat. (Ich geh' mal davon aus, das CSitel auch von CWnd abgeleitet ist) - dessen PostMessage mußt du auch aufrufen</p>
<p>Ich würde das HWND des zu fokussierenden Fensters gleich als Message-Parameter mitgeben (CWnd * geht leider nicht). Also, nach langer Vorrede:</p>
<pre><code>HWND hwndOfEdit = wndEdit-&gt;GetSafeHwnd(); 
wnd-&gt;PostMessage(UWM_MYDLG_SETCTLFOCUS, 0, (LPARAM) hwndofEdit);
</code></pre>
<p>und der Message-Handler dann:</p>
<pre><code class="language-cpp">LRESULT CSitel::OnUwmXxxx(WPARAM wp, LPARAM lp)
{
  ::SetFocus( (HWND) lp ); // globales (Win32)-SetFocus mit Window Handle aus lp aufrufen
  return(0);
}
</code></pre>
<p>Das ist zwar alles nicht so wunderschön MFC, aber die mag ich eh nicht so sehr <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/428102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/428102</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sat, 03 Jan 2004 20:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to GetWindow für Resourcen? on Sun, 04 Jan 2004 10:38:35 GMT]]></title><description><![CDATA[<p>Geil es funktioniert, danke für deine Geduld. <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="😃"
    /><br />
Aber statt:</p>
<pre><code class="language-cpp">wnd-&gt;PostMessage(UWM_MYDLG_SETCTLFOCUS, 0, (LPARAM) hwndofEdit);
</code></pre>
<p>muß es:</p>
<pre><code class="language-cpp">this-&gt;PostMessage(UWM_MYDLG_SETCTLFOCUS, 0, (LPARAM) hwndofEdit);
</code></pre>
<p>heißen, wie du oben schon gesagt hast.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/428280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/428280</guid><dc:creator><![CDATA[Ovaron123]]></dc:creator><pubDate>Sun, 04 Jan 2004 10:38:35 GMT</pubDate></item></channel></rss>