Avatar billede blood Nybegynder
20. februar 2002 - 22:55 Der er 41 kommentarer og
1 løsning

Browser Program

Jeg skal bruge et C++ program
Jeg vil meget gerne have den som c++ kilde kode
Programmet skal fungere som en browser i stil med det program som man kan downloade på nrj.dk for at høre deres net radio
Den skal have nogle næmme variabler i toppen af kilde koden som jeg kan redigere følgene

Højde (Eks: "800")
Brede (Eks: "600")
Http adresse som skal åbnes (Eks: "http://www.eksperten.dk")
Tittel (Eks: "Eksperten's side")
Højer klik (Eks: "ja/nej") (Hvis ja kan man få browserens højerklik menu frem, hvis nej kan man ikke)
Minimer (Eks: "ja/nej") (Hvis ja er minimer og gendan knappen der oppe i hjørnet, hvis nej så er de der ikke)
Luk (Eks: "ja/nej") (Hvis ja så er luk knappen der i hjørnet, hvis nej så...Det burdte i jo gætte jer til :o) )


Koden må helst ikke være rodet da jeg prøver at lære noget :o)

+50 points hvis det bliver lavet i aften :o)
Avatar billede blood Nybegynder
20. februar 2002 - 22:59 #1
lige en funktion mere

scroll (Eks: "ja/nej") (Hvis ja er scroll baren der hvis nej så er den der ikke)
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:11 #2
Hvis du nu downloader Delphi 6 Personal Edition, som er gratis (www.borland.com) er det laaaaaaangt hutigere at lave en webbrowser.

Jeg tror (er ikke sikker) at der medfølger en demo af et program-eksempel af en webbrowser.

Ellers må du stille dit spm inde i Delphi-forum'et.
Men download Delphi 6 Personal Edition. Den er 100 % gratis, og har drag'n drop procedurer, og så foregår det hele i WYSISWYG (alt hvad du designer, er sådan som det kommer til at se ud)
Avatar billede blood Nybegynder
20. februar 2002 - 23:13 #3
Danm kan ikke bruges til så meget da det er c++ jeg prøver at lære :o)
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:18 #4
Jammen C++ må du ENDELIG ikke bruge til at lave større applikationer med. Det var det engang. Men skal du lave Windows-programmer nu om dage, anbefales Delphi altså.
Der kan du også brude nøjagtig de samme API-procedure som i C++.

Kan du programmerer i Pascal?

Det er rigtig nok, at før i tiden brugte man Pascal til de mindre programmer, og C++ til de større programmer, men siden Delphi er kommet på markedet, har det været lige omvendt.

Du kender godt til Delphi, ik'?
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:18 #5
brude = bruge
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:21 #6
Jeg programmerer selv i C++ og i Object Pascal (her anvender jeg Delphi)
Lær C++ hvis du vil i gang med det avancerede, så som systemprogrammering. Men applikationer - der dur C++ ikke.
Avatar billede blood Nybegynder
20. februar 2002 - 23:21 #7
Jeg programmere i php/cgi og jeg vil lære c++ fordi at jeg også skal lave unix apps

Men lige nu har jeg brug for den der browser app.
Det haster så derfor er jeg villig til at gå op til 250 points
Avatar billede blood Nybegynder
20. februar 2002 - 23:22 #8
Og det skal være i c++ :o)
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:37 #9
http://www.jcsoft.com/samples/jc_browser/index.shtml
Der er en Tutorial til, hvordan man laver en browser i C++.
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:39 #10
Nej, forresten, jeg tænkte egentlig på, om man ikke kunne gøre SÅDAN her:

#include <cmlogBrowser.h>

static void qcallback (int status, void* arg, cmlogPacket* data)
{
    cdevData* res = 0;
    int severity;
    char text[1024];
    char host[80];

 
    if (data) {
        cmlogMsg** msgs = data->messages ();
        for (int i = 0; i < data->numberOfData (); i++) {
            cmlog_cdevMessage& idata = (*msgs[i]);
            res = idata.getData ();

            if (res) {
                res->get ("host", host, sizeof (host));
                res->get ("severity", &severity);
                res->get ("text", text, sizeof (text));

                printf ("From Host %s with Severity %d: %s\n", host, severity, text);
            }
        }
        for (i = 0; i < data->numberOfData (); i++)
            delete msgs[i];
        delete []msgs;
    }
}

char *selection = ``facility == 'EPICS' && severity == 10'';

main (int argc, char **argv)
{
    cmlogBrowser browser;
    char        command[1024];
    char        attr[80];
    int          status;
 
    if (browser.connect () == CMLOG_SUCCESS) {
        printf ("Connect to the cmlogServer\n");

        printf ("Enter cmlog test command\n");
        scanf ("%s", command);
        if (strcasecmp (command, "query") == 0) {
            printf ("Enter start and end time in double value\n");
            double start, end;
            scanf ("%lf %lf", &start, &end);
     
            cdevData data;
            data.insert ("start", start);
            data.insert ("end", end);
        data.insert (``queryMsg'', selection);

            status = browser.queryCallback (command, data, qcallback, 0);
            browser.pend ();
      }
    }   

}
Det var så en Webbrowser-demo!
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:41 #11
Hvis du vil have den til at køre i UNIX, så lav en Make-fil. Den skal se sådan ud:

CXX = CC
CXXFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT

OBJS = browserTest.o
LIBS = -L$(CMLOG)/lib/solaris -lcmlogb -lsocket -lnsl

all: browserTest

borwserTest: $(OBJS)
        rm -f $@
        $(CXX) -o $@ $(LIBS)

.cc.o:
        rm -f $@
        $(CXX) $(CXXFLAGS) -c $< -o $@

clean:
        rm -f *.o browserTest core *~
Avatar billede blood Nybegynder
20. februar 2002 - 23:49 #12
Kald mig dum.. (Stadig ny i c++ :o) )

Men hvor finder jeg cmlogBrowser.h ????
Og hvor der de der variabler? :o)
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:50 #13
Jeg har lige bikset denne her sammen til dig:


CComObject<CDocumentSink> *pSink;
CComPtr<IUnknown> pSrcUnk;
DWORD dwDocCookie;

STDMETHODIMP CWebOCWindow::DocumentComplete(IDispatch *wbDisp, VARIANT* url) {
    HRESULT hr;
    CComPtr<IDispatch> pDocDisp;
    CComQIPtr<IHTMLDocument2> pDoc;
    CComPtr<IUnknown> wbDispUnk;


    hr = wbDisp->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&wbDispUnk));
    if (FAILED(hr)) {
        goto cleanup;
    }
    if (wbDispUnk == browserUnk) {
        hr = CComObject<CDocumentSink>::CreateInstance(&pSink);
        if (FAILED(hr)) {
            goto cleanup;
        }

        hr = webOC->get_Document(&pDocDisp);
        if (FAILED(hr)) {
            goto cleanup;
        }
        hr = pDocDisp->QueryInterface(&pSrcUnk);
        if (FAILED(hr)) {
            goto cleanup;
        }

        pDoc = pDocDisp;
        if (!pDoc) {
            goto cleanup;
        }

        hr = AtlAdvise(pSrcUnk, pSink, DIID_HTMLDocumentEvents, &dwDocCookie);
        if (FAILED(hr)) {
            goto cleanup;
        }
    }

cleanup:

    return hr;
}


//Og så den sidste del:

void OnClick(VARIANT_BOOL *bProcessEvent) {
        AtlTrace("CDocumentSink:OnClick - Obtained a click on the document\n");
    *bProcessEvent = TRUE;
}

STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult,
              EXCEPINFO *pexcepinfo, UINT *puArgErr) {
        HRESULT hr;

    if (dispidMember == DISPID_CLICK) {
        VARIANT_BOOL bEventRet;
        OnClick(&bEventRet);
        pvarResult->vt = VT_BOOL;
        pvarResult->boolVal = bEventRet;
            hr = S_OK;
    } else {
            hr = DISP_E_MEMBERNOTFOUND;
    }
    return hr;
}

//Og her kan vi så navigerer frem og tilbage:

STDMETHODIMP CWebOCWindow::BeforeNavigate2(IDispatch *pDisp, VARIANT *url, VARIANT *Flags, VARIANT *TargetFrameName,
                            VARIANT *PostData, VARIANT *Headers, VARIANT_BOOL *Cancel) {
    if (pSrcUnk) {
        hr = AtlUnadvise(pSrcUnk, DIID_HTMLDocumentEvents, dwDocCookie);
        pSrcUnk.Detach();
    }
    return S_OK;
}
Avatar billede blood Nybegynder
20. februar 2002 - 23:53 #14
Jeg vil meget gerne have en hel app lige til at compile :o) (Skal self. kunne ændre de det variabler)
Der er jo 250 points vi taler om.. :o)
Jeg vil ikke tro at det tager så lang tid at lave..

Og jeg håber at du vil lave det..
Avatar billede geek1011 Nybegynder
20. februar 2002 - 23:58 #15
Denne her er lige til at compile:


#include <windows.h>
#include <stdio.h>
#include <iostream.h>


CComObject<CDocumentSink> *pSink;
CComPtr<IUnknown> pSrcUnk;
DWORD dwDocCookie;

STDMETHODIMP CWebOCWindow::DocumentComplete(IDispatch *wbDisp, VARIANT* url) {
    HRESULT hr;
    CComPtr<IDispatch> pDocDisp;
    CComQIPtr<IHTMLDocument2> pDoc;
    CComPtr<IUnknown> wbDispUnk;


    hr = wbDisp->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&wbDispUnk));
    if (FAILED(hr)) {
        goto cleanup;
    }
    if (wbDispUnk == browserUnk) {
        hr = CComObject<CDocumentSink>::CreateInstance(&pSink);
        if (FAILED(hr)) {
            goto cleanup;
        }

        hr = webOC->get_Document(&pDocDisp);
        if (FAILED(hr)) {
            goto cleanup;
        }
        hr = pDocDisp->QueryInterface(&pSrcUnk);
        if (FAILED(hr)) {
            goto cleanup;
        }

        pDoc = pDocDisp;
        if (!pDoc) {
            goto cleanup;
        }

        hr = AtlAdvise(pSrcUnk, pSink, DIID_HTMLDocumentEvents, &dwDocCookie);
        if (FAILED(hr)) {
            goto cleanup;
        }
    }

cleanup:

    return hr;
}


//Og så den sidste del:

void OnClick(VARIANT_BOOL *bProcessEvent) {
        AtlTrace("CDocumentSink:OnClick - Obtained a click on the document\n");
    *bProcessEvent = TRUE;
}

STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult,
              EXCEPINFO *pexcepinfo, UINT *puArgErr) {
        HRESULT hr;

    if (dispidMember == DISPID_CLICK) {
        VARIANT_BOOL bEventRet;
        OnClick(&bEventRet);
        pvarResult->vt = VT_BOOL;
        pvarResult->boolVal = bEventRet;
            hr = S_OK;
    } else {
            hr = DISP_E_MEMBERNOTFOUND;
    }
    return hr;
}

//Og her kan vi så navigerer frem og tilbage:

STDMETHODIMP CWebOCWindow::BeforeNavigate2(IDispatch *pDisp, VARIANT *url, VARIANT *Flags, VARIANT *TargetFrameName,
                            VARIANT *PostData, VARIANT *Headers, VARIANT_BOOL *Cancel) {
    if (pSrcUnk) {
        hr = AtlUnadvise(pSrcUnk, DIID_HTMLDocumentEvents, dwDocCookie);
        pSrcUnk.Detach();
    }
    return S_OK;
}
Avatar billede geek1011 Nybegynder
21. februar 2002 - 00:01 #16
Fortæl mig hvilke fejl-meddelelser der kommer, hvis der kommer nogen.
Avatar billede geek1011 Nybegynder
21. februar 2002 - 00:02 #17
Hvilken C++ compiler bruger du?
Avatar billede blood Nybegynder
21. februar 2002 - 00:04 #18
Jeg bruger Dev-C++
1 test.c cmlogBrowser.h: No such file or directory
Avatar billede blood Nybegynder
21. februar 2002 - 00:08 #19
Jeg kan vist ikke finde ud af det her compile shit :o(

Kan du ikke compile den som exe og sætte den til at jeg kan redigere variablerne via en tekst fil?

Højde (Eks: "800")
Brede (Eks: "600")
Http adresse som skal åbnes (Eks: "http://www.eksperten.dk")
Tittel (Eks: "Eksperten's side")
Højer klik (Eks: "ja/nej") (Hvis ja kan man få browserens højerklik menu frem, hvis nej kan man ikke)
Minimer (Eks: "ja/nej") (Hvis ja er minimer og gendan knappen der oppe i hjørnet, hvis nej så er de der ikke)
Luk (Eks: "ja/nej") (Hvis ja så er luk knappen der i hjørnet, hvis nej så...Det burdte i jo gætte jer til :o) )
scroll (Eks: "ja/nej") (Hvis ja er scroll baren der hvis nej så er den der ikke)
Avatar billede blood Nybegynder
21. februar 2002 - 00:09 #20
Eller bedere anbefale en c++ compiler som virker :o) og så lave de variabler i toppen som jeg stadig ikke kan se :o)

Hæhæ De er meget vigtige
Avatar billede blood Nybegynder
21. februar 2002 - 00:10 #21
Det andet script gav 32 fejl
Avatar billede geek1011 Nybegynder
21. februar 2002 - 09:28 #22
Jeg bruger også selv Dev-C++ og du får ikke en bedre compiler end Dev-C++ end ikke Microsoft Visual C++ er bedre (den koster bare penge).

Jeg ved ikke helt hvordan man nu åbner en website i et C++ program, men jeg kan da lave alt det andet til dig, altså det med variablerne.

Forresten: Du ved vel godt, at når du skal compile, skal du først gemme dit project, derefter trykke Ctrl + F9 for at compile.
Avatar billede jpk Nybegynder
21. februar 2002 - 10:55 #23
>> blood
Mht. udsagn som "Men applikationer - der dur C++ ikke" vil jeg nu anbefale dig at vende det døve øre til, det er absolut ikke den gængse opfattelse...
Avatar billede soepro Nybegynder
21. februar 2002 - 13:59 #24
geek1001 >> Hvor har du det vrøvl omkring Delphi fra ??? C++ Builder deler VCL med Delphi, men kører rent C - ergo, alt hvad du kan lave i Delphi kan også laves i C++ Builder. C++ Builder kan rent faktisk compilere Delphi Pascal kode - men ikke omvendt. C sproget giver dig nogle muligheder, som du ikke har i Pascal - alene pga. den måde de to sprog er skruet sammen. (F.eks. kan du ikke type-caste i Pascal.)
Avatar billede blood Nybegynder
21. februar 2002 - 16:18 #25
Yes yes.. :o)

Men er der en som vil hjælpe med den kode??? :o)
200 Points på spil :o)
Avatar billede jpk Nybegynder
21. februar 2002 - 16:25 #26
Skal den kunne køre på UNIX?
Avatar billede blood Nybegynder
21. februar 2002 - 16:54 #27
Nej behøver den ikke :o)
Avatar billede jpk Nybegynder
21. februar 2002 - 16:59 #28
For 300 point vil jeg godt lave programmet, men med brug af MFC, så du skal have Visual C++ hvis du selv skal kompilere det...
Avatar billede blood Nybegynder
21. februar 2002 - 19:32 #29
Ok for 300 points.. :o)
Bare gå igang :o)
Avatar billede geek1011 Nybegynder
21. februar 2002 - 22:17 #30
Det "vrøvl" jeg har med Delphi og C++ er altså ikke noget vrøvl.
Hvis han skal kunne lave programmer i C++ lige så nemt som i Delphi, ja, så skal han bruge C++ Builder, men C++ Builder koster penge, det gør Delphi ikke.
Avatar billede geek1011 Nybegynder
21. februar 2002 - 22:18 #31
Du JPK - når du er færdig med programmet, gider du så ikke lige sende en kopi af programmet til min email adresse?
geek1011@mailbox.as
Avatar billede geek1011 Nybegynder
21. februar 2002 - 22:19 #32
Altså en kopi af source-coden
Avatar billede blood Nybegynder
21. februar 2002 - 22:21 #33
geek1011 >> Han poster den vel her :o)
Avatar billede jpk Nybegynder
22. februar 2002 - 18:26 #34
>> blood
Det er nok bedst jeg mailer koden direkte, den fylder mere end 1000 linier!

Gider du poste en mail-adr...
Avatar billede blood Nybegynder
22. februar 2002 - 18:43 #35
simon_holm@mail.tele.dk
Avatar billede blood Nybegynder
22. februar 2002 - 18:46 #36
Avatar billede jpk Nybegynder
22. februar 2002 - 18:53 #37
Fint, jeg sender det med det samme...

Konfigurationen foregår via filen Settings.txt, der indeholder følgende:

[StartupSettings]
strTitle=Name
strURL=http://www.eksperten.dk/
bContextMenuEnabled=0
bScrollingEnabled=1
nWidth=800
nHeight=600
bMinimize=0
bMaximize=1
bSysMenu=1

Du kan sikkert regne ud hvordan den bruges, men jeg kan da lige nævne at de variable der har værdierne 0/1 er boolske typer, hvor 0 betyder false og 1 betyder true.
Fx betyder bContextMenuEnabled=0, at højre-kliks-menuen ikke er aktiveret.
Filen skal ligge i samme folder som programmet (Browser.exe)
Avatar billede jpk Nybegynder
22. februar 2002 - 18:57 #38
Hvorfor har du oprettet et nyt spørgsmål?
Avatar billede jpk Nybegynder
24. februar 2002 - 13:00 #39
Har du prøvet at køre programmet?
Avatar billede blood Nybegynder
25. februar 2002 - 16:35 #40
Jeg har oprettet to spørgsmål fordi at man max kan afsætte 200 points og du vil have 300 :o)
Avatar billede blood Nybegynder
25. februar 2002 - 16:36 #41
Jeg takker for vildt.. :o)
Avatar billede jpk Nybegynder
25. februar 2002 - 16:55 #42
Selv tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester