eigener WebBrowser...

Sportsboy
Hey.
ich möchte nen eigenen webbrowser mit "Micrsoft Visual C++ 6.0" coden.

habs mit dem tut aus "Visual C++6 in 21 Tagen" versucht.

das findet ihr hier http://www.se.fh-heilbronn.de/usefulstuff/VCPLUS6/kap21.htm

allerdings scheint in dem tut nen fehler zu sein.^^

der fehler wird mir hier angezeigt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 void CMainFrame::OnNewAddress()
 {
 CString sAddress;

 // Den neuen URL holen
 m_wndDlgBar.GetDlgItem(IDC_EADDRESS)->GetWindowText(sAddress);
 // Zum neuen URL navigieren
 ((CWebBrowseView*)GetActiveView())->Navigate(sAddress);
 }

die fehlermeldung sieht so aus:
code:
1:
2:
3:
4:
5:
6:
MainFrm.cpp
C:\Programme\Microsoft Visual Studio\MyProjects\WebBrowse\MainFrm.cpp(128) : error C2065: 'CWebBrowseView' : undeclared identifier
C:\Programme\Microsoft Visual Studio\MyProjects\WebBrowse\MainFrm.cpp(128) : error C2059: syntax error : ')'
Generating Code...



woran liegt das?

bzw. wenn kennt jmd ein anderes (besseres) tutorial?

THX 4 HELP

mfg
Sportsboy
Prophet
ich kenne mich zwar nicht besonders damit aus aber nach der fehlermeldung zu urteilen:

-> vertippt?

-> 'CWebBrowseView' : undeclared identifier -> Diesen Typ gibt es nicht ich vermute auch es sollte eigentlich CWebBrowserView heißen oder?

-> syntax error : ')' -> ((CWebBrowseView*)GetActiveView()) <- das ganze sieht merkwürdig aus ich glaube so muss es heißen: CWebBrowserView * GetActiveView()
Sportsboy
thx für die schnelle antwort.

ich hab beides ausprobiert. mit und ohne "r". aba das stimmt schon so ohne "r", da es ja der projektname ist (welcher WebBrowse heißt).
das mit der ")" wird glaube ich nurals fehler angezeigt, weil er dem befehl
"((CWebBrowseView*)GetActiveView())" allgemein nicht erkennt.

eigentlich sollte er ja auf die funktion "GetActiveView" in "CWebBrowseView" zugreifen.... was aus irgendeinem grund nicht geht^^
Prophet
php:
1:
<?php ((CWebBrowseView*)GetActiveView())->Navigate(sAddress); ?>


Das ganze konstruct finde ich ein wenig komisch es ergibt für mich keinen sinn. so würde es für mich sinn machen:
php:
1:
<?php CWebBrowseView->GetActiveView()->Navigate(sAddress); ?>


Ich verstehe nicht ganz was du daoben mit einem Pointer willst wenn du eine Funktion und eine Datentyp hast... Dazu noch die klammern verwirrt
Sportsboy
hmm... so gehts auch nicht.

ich zitiere mal aus dem tutorial

Zitat:

Listing 21.1: Die Funktion OnNewAddress der Klasse CMainFrame

1: void CMainFrame:schlafen nNewAddress()
2: {
3: CString sAddress;
4:
5: // Den neuen URL holen
6: m_wndDlgBar.GetDlgItem(IDC_EADDRESS)->GetWindowText(sAddress);
7: // Zum neuen URL navigieren
8: ((CWebBrowseView*)GetActiveView())->Navigate(sAddress);
9: }
Die Funktion holt in Zeile 6 mit der Funktion GetWindowText den Text im Eingabefeld und schreibt ihn in die Variable m_sAddress. Die Dialogleiste ist in der Klasse CMainFrame als Variable m_wndDlgBar deklariert, so daß sich die Funktion GetDlgItem auf der Variablen der Dialogleiste verwenden läßt, um einen Zeiger auf das Eingabefeld zu ermitteln.

In Zeile 8 findet die Typumwandlung des aus der Funktion GetActiveView zurückgegebenen Zeigers in einen Zeiger auf die Klasse CWebBrowseView statt. Damit kann man die Funktion Navigate auf der Ansichtsklasse aufrufen und den URL übergeben, den der Benutzer im Eingabefeld spezifiziert hat.



ich glaube, dass es daran liegt, dass ich nirgends die funktion "GetActiveView" finde. es wurde allerdings in dem tutorial nicht erwähnt, dass ich diese funktion anlegen muss^^.
Prophet
fragt sich nur was die funktion zurück gibt.

jetzt wersteh ich das auch...
Sportsboy
hmm... ich such schon die ganze zeit nach nem anderen tut.. aba hab nur ein einziges gefunden.. dort wird es so dargestellt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
void CMainFrame::OnNewURL() 
{ 
    CString strURL; 
    m_wndDlgBar.GetDlgItem(IDC_URL) -> GetWindowText(strURL); 
    CView* pView = GetActiveView(); 

    CMyBrowserView* pMyView = (CMyBrowserView*) pView; 
    pMyView -> Navigate(strURL); 
} 


allerdings klappt dies auch nicht. Mauer

aus der offiziellen microsoft seite werde ich auch nicht schlau...
http://msdn.microsoft.com/library/defaul...rnetBrowser.asp

kA was ich noch machen soll.. verwirrt
Prophet
code:
1:
CView* pView = GetActiveView(); 


Hier erstellst du ein neues objekt vom typ CView das problem daran ist das GetActiveView() eine funktion ist und nicht der konstruktor...

so wäre es richtig:
code:
1:
CView* pView = new CView(); 


code:
1:
CMyBrowserView* pMyView = (CMyBrowserView*) pView; 

Hier ist wieder das konvertierungs problem du kannst objekte nicht einfach ineinander konvertieren. das ist genau das selbe wie bei bool und int...
Sportsboy
hmm... irgendwie hab ich das nich verstanden, wie das jetzt im ganzen aussehen müsste.

aber vllt komme ich über eine andere schiene weiter.

alles was ich brauch ist eigentlich nur, dass ich per knopfdruck auf eine bestimmte seite komme.

also hab ich einen button, wenn ich den drücke passiert folgendes

Zitat:

void CMainFrame:schlafen nGoogle()
{
// TODO: Add your command handler code here
Navigate("http://www.google.de");
}


ich komme also auf google.de

das prob is, dass ich mich ja in der klasse CMainFrame befinde und Navigate() dort nicht deklariert ist. ich weiß aba nich so richtig, wie ich das nun deklariere...
(glaube da muss man irgendwas mit nem zeiger machen)

vltl is das einfacher..
Prophet
Wie schon gesagt ich habe keine erfahrung mit M$ C++ .

Allgemein habe ich mit C++ nur wenig erfahrung mehr ein basis wissen ich kann dir also bei diesen feinheiten nicht weiterhelfen...
Sportsboy
ok. dann google ich noch eine weile weiter Augenzwinkern

THX


EDIT:

LLLLLLOOOOOOOOOOOOOOOOOOLLLLLLLLL
ich habs^^

code:
1:
2:
3:
4:
5:
6:
7:
void CMainFrame::OnGoogle() 
{
		// TODO: Add your command handler code here
	((CWebBrowseView*)GetActiveView())->Navigate("http://www.google.de");
}


so stimmt das schon alles.. nur hatte ich

#include "WebBrowseDoc.h"
#include "WebBrowseView.h"

nich in CMainFraim implementiert Mauer Mauer Mauer
Prophet
kichern ja klar wenn du die entsprechenden header nicht includest kommst du nicht weit... deswegen waren das auch alles unbekannte identifer... kichern