Pointer problem
-
Hi @all,
ich habe mir gif-Bilder in meinem Fenster gemacht und möchte nun in jedem Gif-Bild zwei Button haben.
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.
Doch da hängt es.Also die Bilder habe ich folgendermaßen erstellt.
in .h IPicture *m_bild1; //HintergrundBild IPicture *m_bild2; //Button 1 IPicture *m_bild3; //Button 2 in .cpp OnInitDialog OleLoadPicturePath(L"C:\\Portal\\Bild1.jpg", 0, 0, 0, IID_IPicture,(void **)&m_bild1); OleLoadPicturePath(L"C:\\Portal\\Button1.gif", 0, 0, 0, IID_IPicture,(void **)&m_bild2); OleLoadPicturePath(L"C:\\Portal\\Button2.gif", 0, 0, 0, IID_IPicture,(void **)&m_bild3); Die werden in der DrawBild gezeichnet. void CPortalDlg::DrawBild(IPicture *bild, int BildNr) { CClientDC dc(this); CRect rc; GetClientRect(&rc); OLE_XSIZE_HIMETRIC width; OLE_YSIZE_HIMETRIC height; bild->get_Width(&width); int size_x = (width*96/2540); bild->get_Height(&height); int size_y = (height*96/2540) + 1; switch(BildNr) { case 1: bild->Render(dc, 10, 100, size_x, size_y, 0, height, width, -height, &rc); break; case 2: bild->Render(dc, 20, 270, size_x, size_y, 0, height, width, -height, &rc); break; case 3: bild->Render(dc, 170, 270, size_x, size_y, 0, height, width, -height, &rc); break; } }Soweit sogut!
Klappt super.
Doch jetzt möchte ich die funktion OnLButtonDown auf die einzelnen Butten legen, doch es klappt nicht.void CPortalDlg::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect; /************************************************************* m_GS1.GetWindowRect(&rect); // hier ist das Problem. Bei einer Membervariable kann ich GetWindowRect nutzen, auf einen Ponter nicht. Wie kann ich das ändern???? **************************************************************/ ScreenToClient(&rect); if (rect.PtInRect(point)) ShellExecute(AfxGetMainWnd()->m_hWnd,_T("open"), _T("C:\\Programme\\Java\\j2re1.4.2_01\\javaws\\javaws.exe"),_T(""),NULL,0); CDialog::OnLButtonDown(nFlags, point); }
-
Kann mir wirklich keier helfen???

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.
Ich habe einen Pointer der da heißt
IPicture *m_bild2;den will ich in die Funktion OnLButtonDown einsetzten.
void CPortalDlg::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect; /************************************************************* m_GS1.GetWindowRect(&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 "Button" 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(&rect); if (rect.PtInRect(point)) ShellExecute(AfxGetMainWnd()->m_hWnd,_T("open"), _T("C:\\Programme\\Java\\j2re1.4.2_01\\javaws\\javaws.exe"),_T(""),NULL,0); CDialog::OnLButtonDown(nFlags, point); }