<?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[Pointer problem]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich habe mir gif-Bilder in meinem Fenster gemacht und möchte nun in jedem Gif-Bild zwei Button haben.<br />
Damit das ganze auch gut aussieht habe ich mir dafür zwei weitere Gif-Bilder gemacht (mit Rand) und möchte diesen nun die Funktion OnLButtonDown geben.<br />
Doch da hängt es.</p>
<p>Also die Bilder habe ich folgendermaßen erstellt.</p>
<pre><code class="language-cpp">in .h
IPicture *m_bild1;  //HintergrundBild
IPicture *m_bild2;  //Button 1
IPicture *m_bild3;  //Button 2

in .cpp

OnInitDialog
OleLoadPicturePath(L&quot;C:\\Portal\\Bild1.jpg&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild1);
OleLoadPicturePath(L&quot;C:\\Portal\\Button1.gif&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild2);
OleLoadPicturePath(L&quot;C:\\Portal\\Button2.gif&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild3);

Die werden in der DrawBild gezeichnet.

void CPortalDlg::DrawBild(IPicture *bild, int BildNr) 
{ 
	CClientDC dc(this); 

	CRect rc; 
	GetClientRect(&amp;rc); 

	OLE_XSIZE_HIMETRIC width; 
	OLE_YSIZE_HIMETRIC height; 

	bild-&gt;get_Width(&amp;width); 
	int size_x = (width*96/2540);
	bild-&gt;get_Height(&amp;height);
	int size_y = (height*96/2540) + 1;
	switch(BildNr)
	{
	case 1:
        bild-&gt;Render(dc, 10, 100, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
	case 2:
		bild-&gt;Render(dc, 20, 270, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
	case 3:
		bild-&gt;Render(dc, 170, 270, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
     }
}
</code></pre>
<p>Soweit sogut!<br />
Klappt super.<br />
Doch jetzt möchte ich die funktion OnLButtonDown auf die einzelnen Butten legen, doch es klappt nicht.</p>
<pre><code class="language-cpp">void CPortalDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CRect rect;
/*************************************************************

	m_GS1.GetWindowRect(&amp;rect);
     // hier ist das Problem. Bei einer Membervariable kann ich GetWindowRect nutzen, auf einen Ponter nicht. Wie kann ich das ändern????

**************************************************************/
	ScreenToClient(&amp;rect);

	if (rect.PtInRect(point))
		ShellExecute(AfxGetMainWnd()-&gt;m_hWnd,_T(&quot;open&quot;),
			_T(&quot;C:\\Programme\\Java\\j2re1.4.2_01\\javaws\\javaws.exe&quot;),_T(&quot;&quot;),NULL,0);

	CDialog::OnLButtonDown(nFlags, point);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/76852/pointer-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 15:56:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76852.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jun 2004 13:58:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer problem on Tue, 15 Jun 2004 13:58:06 GMT]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich habe mir gif-Bilder in meinem Fenster gemacht und möchte nun in jedem Gif-Bild zwei Button haben.<br />
Damit das ganze auch gut aussieht habe ich mir dafür zwei weitere Gif-Bilder gemacht (mit Rand) und möchte diesen nun die Funktion OnLButtonDown geben.<br />
Doch da hängt es.</p>
<p>Also die Bilder habe ich folgendermaßen erstellt.</p>
<pre><code class="language-cpp">in .h
IPicture *m_bild1;  //HintergrundBild
IPicture *m_bild2;  //Button 1
IPicture *m_bild3;  //Button 2

in .cpp

OnInitDialog
OleLoadPicturePath(L&quot;C:\\Portal\\Bild1.jpg&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild1);
OleLoadPicturePath(L&quot;C:\\Portal\\Button1.gif&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild2);
OleLoadPicturePath(L&quot;C:\\Portal\\Button2.gif&quot;, 0, 0, 0, IID_IPicture,(void **)&amp;m_bild3);

Die werden in der DrawBild gezeichnet.

void CPortalDlg::DrawBild(IPicture *bild, int BildNr) 
{ 
	CClientDC dc(this); 

	CRect rc; 
	GetClientRect(&amp;rc); 

	OLE_XSIZE_HIMETRIC width; 
	OLE_YSIZE_HIMETRIC height; 

	bild-&gt;get_Width(&amp;width); 
	int size_x = (width*96/2540);
	bild-&gt;get_Height(&amp;height);
	int size_y = (height*96/2540) + 1;
	switch(BildNr)
	{
	case 1:
        bild-&gt;Render(dc, 10, 100, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
	case 2:
		bild-&gt;Render(dc, 20, 270, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
	case 3:
		bild-&gt;Render(dc, 170, 270, size_x, size_y, 0, height, width, -height, &amp;rc); 
		break;
     }
}
</code></pre>
<p>Soweit sogut!<br />
Klappt super.<br />
Doch jetzt möchte ich die funktion OnLButtonDown auf die einzelnen Butten legen, doch es klappt nicht.</p>
<pre><code class="language-cpp">void CPortalDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CRect rect;
/*************************************************************

	m_GS1.GetWindowRect(&amp;rect);
     // hier ist das Problem. Bei einer Membervariable kann ich GetWindowRect nutzen, auf einen Ponter nicht. Wie kann ich das ändern????

**************************************************************/
	ScreenToClient(&amp;rect);

	if (rect.PtInRect(point))
		ShellExecute(AfxGetMainWnd()-&gt;m_hWnd,_T(&quot;open&quot;),
			_T(&quot;C:\\Programme\\Java\\j2re1.4.2_01\\javaws\\javaws.exe&quot;),_T(&quot;&quot;),NULL,0);

	CDialog::OnLButtonDown(nFlags, point);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/540840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/540840</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Tue, 15 Jun 2004 13:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer problem on Wed, 16 Jun 2004 09:28:01 GMT]]></title><description><![CDATA[<p>Kann mir wirklich keier helfen??? <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="😞"
    /></p>
<p>Ich gebe zu, der ganze Text oben ist auch ein bissel viel. Dient aber nur zur genauen Erklärung. Also hier nochmal die Frage kurzgehalten.</p>
<p>Ich habe einen Pointer der da heißt</p>
<pre><code class="language-cpp">IPicture *m_bild2;
</code></pre>
<p>den will ich in die Funktion OnLButtonDown einsetzten.</p>
<pre><code class="language-cpp">void CPortalDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
    CRect rect;
/*************************************************************

    m_GS1.GetWindowRect(&amp;rect);
     // m_GS1 ist eine Membervariable auf einen CStatic-Feld. Habe ich zu Testzwecken angelegt. Funktioniert. 
     // Jetzt kann ich aber das Staticfeld  nicht nutzen sondern muß diesen &quot;Button&quot; mit einen Pointer auf IPicture erstellen, 
    da ich auf den Hintergrundbild ein zweites Bild lege und der Hintergrund durchscheinen soll.
    Aber wie kann ich GetWindowRect mit nen Pointer nutzen???

**************************************************************/
    ScreenToClient(&amp;rect);

    if (rect.PtInRect(point))
        ShellExecute(AfxGetMainWnd()-&gt;m_hWnd,_T(&quot;open&quot;),
            _T(&quot;C:\\Programme\\Java\\j2re1.4.2_01\\javaws\\javaws.exe&quot;),_T(&quot;&quot;),NULL,0);

    CDialog::OnLButtonDown(nFlags, point);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/541374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/541374</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Wed, 16 Jun 2004 09:28:01 GMT</pubDate></item></channel></rss>