Avatar billede stringbuffer Nybegynder
21. november 2000 - 11:58 Der er 6 kommentarer og
1 løsning

ASP komponenter

Er der nogen, der har et eksempel på hvordan et komponent til ASP kunne være lavet så den bruger nogle af de indbyggede objekter og bruger både alm klasser, man selv kan skrive og ATL klasser?
Helst med nogle sigende kommentarer

PS
IKKE et af de eksempler, der står på MSDN-siden

Avatar billede lbs Nybegynder
22. november 2000 - 01:08 #1
1. du laver et nyt ATL COM wizard projekt.
2. typen skal være en DLL. de 3 V\'er i bunden skal ikke markeres (MTS,MFC og allow merging..)
3. Højre klik på \"dinKlasse classes\" og vælg new object
4. vælg active server pages component
5. i næste dialog skriver du navnet på hvad klassen skal hedde
  vigtigt: læg mærke til det som står i Prog Id, det er den streng du bruger når du skal danne en instans i ASP
6. højreklik på det nyfremkomne interface og add en metode.. lad være med at give den parametre i starten.
7. find metoden og skriv følgende:
  m_piResponse->Write(OLESTR(\"Dette er min første streng fra c++ til asp\"));

Compile, lav en instans og kald metode
:)
Avatar billede lbs Nybegynder
22. november 2000 - 01:09 #2
iøvrigt:

Når beder VC om at lave et active server pages component danner den som default pointere til de inbyggede objekter..
som du nok kan regne ud ligger de i m_piRequest m_piSession osv.
Avatar billede stringbuffer Nybegynder
22. november 2000 - 09:00 #3
sorry Ibs, men det er noget konkret source-kode, jeg efterlyser, desuden laver min wizard ikke metoderne korrekt (den skal jo bruge makroen STDMETHOD og ikke HRESULT-type). Bruger btw VC6.0.

Det, jeg er meget interesseret i at se er nogle eksempler hvor man bruger nogle alm klasser i komponentet, og hvordan dens interface skal laves når man bruger forskellige typer som input. (VC 6.0 laver IKKE interface til metoderne)
Avatar billede lbs Nybegynder
23. november 2000 - 02:26 #4
jo
så er det fordi du ikke har hentet den nyeste update.
hvis det tager dig for lang tid at hente updaten(den er vist over 100mb), kan lave et eksempel for dig.
Avatar billede lbs Nybegynder
24. november 2000 - 02:54 #5
Her er beviset:



/ hahas.cpp : Implementation of Chahas
#include \"stdafx.h\"
#include \"Haha.h\"
#include \"hahas.h\"

/////////////////////////////////////////////////////////////////////////////
// Chahas

STDMETHODIMP Chahas::OnStartPage (IUnknown* pUnk) 
{
    if(!pUnk)
        return E_POINTER;

    CComPtr<IScriptingContext> spContext;
    HRESULT hr;

    // Get the IScriptingContext Interface
    hr = pUnk->QueryInterface(IID_IScriptingContext, (void **)&spContext);
    if(FAILED(hr))
        return hr;

    // Get Request Object Pointer
    hr = spContext->get_Request(&m_piRequest);
    if(FAILED(hr))
    {
        spContext.Release();
        return hr;
    }

    // Get Response Object Pointer
    hr = spContext->get_Response(&m_piResponse);
    if(FAILED(hr))
    {
        m_piRequest.Release();
        return hr;
    }
   
    // Get Server Object Pointer
    hr = spContext->get_Server(&m_piServer);
    if(FAILED(hr))
    {
        m_piRequest.Release();
        m_piResponse.Release();
        return hr;
    }
   
    // Get Session Object Pointer
    hr = spContext->get_Session(&m_piSession);
    if(FAILED(hr))
    {
        m_piRequest.Release();
        m_piResponse.Release();
        m_piServer.Release();
        return hr;
    }

    // Get Application Object Pointer
    hr = spContext->get_Application(&m_piApplication);
    if(FAILED(hr))
    {
        m_piRequest.Release();
        m_piResponse.Release();
        m_piServer.Release();
        m_piSession.Release();
        return hr;
    }
    m_bOnStartPageCalled = TRUE;
    return S_OK;
}

STDMETHODIMP Chahas::OnEndPage () 
{
    m_bOnStartPageCalled = FALSE;
    // Release all interfaces
    m_piRequest.Release();
    m_piResponse.Release();
    m_piServer.Release();
    m_piSession.Release();
    m_piApplication.Release();

    return S_OK;
}


STDMETHODIMP Chahas::haha()
{
    // TODO: Add your implementation code here

    return S_OK;
}
Avatar billede stringbuffer Nybegynder
26. november 2000 - 16:06 #6
så meget har jeg kunnet se på MSDN, det er som sagt nogle virkende eksempler, jeg søger... og dit eksempel med
m_piResponse->Write(OLESTR(\"Dette er min første streng fra c++ til asp\"));
virker ikke, den brokker sig over at den ikke kan konvertere fra OLESTR til en eller anden Variant-type...

Håber at nogen kan hive noget op fra rodekassen, gerne simpelt, bare det er testet.
Avatar billede stringbuffer Nybegynder
07. december 2000 - 13:24 #7
Bliver man klog af altid finde ud af tingene selv?

Måske ikke, men nogle gange er det den eneste måde at komme videre....

Man kan sagtens bruge almindelige klasser, som man har skrevet til andre applikationer, i ATL-komponenter. Det virker i hvert fald fint sålænge disse ikke anvender operationer som involverer operativsystem-kald, f.eks. læsning/skrivning af fil osv (åbenbart noget, der kræver multithreading).

Jeg lukker dette spg.
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