Введение в программирование

       

только на тот случай, если


// Заголовочный файл MyISAPI_1.h #pragma once #include "resource.h" class CMyISAPI_1Extension : public CHttpServer { public: CMyISAPI_1Extension(); // Конструктор ~CMyISAPI_1Extension(); public: virtual BOOL GetExtensionVersion(HSE_VERSION_INFO* pVer); virtual BOOL TerminateExtension(DWORD dwFlags); void Default(CHttpServerContext* pCtxt); DECLARE_PARSE_MAP() }; // Файл реализации MyISAPI_1.cpp #include "stdafx.h" #include "MyISAPI_1.h" CWinApp theApp; // Объект "приложение" BEGIN_PARSE_MAP(CMyISAPI_1Extension, CHttpServer) // Таблица // обработки команды // TODO: место для определения ON_PARSE_COMMAND() и // ON_PARSE_COMMAND_PARAMS() ON_PARSE_COMMAND(Default, CMyISAPI_1Extension, ITS_EMPTY) DEFAULT_PARSE_COMMAND(Default, CMyISAPI_1Extension) END_PARSE_MAP(CMyISAPI_1Extension) CMyISAPI_1Extension theExtension; // Только один объект //ISAPI-расширение класса, // наследуемого от CHttpServer CMyISAPI_1Extension::CMyISAPI_1Extension(){ } // Конструктор CMyISAPI_1Extension::~CMyISAPI_1Extension() { } BOOL CMyISAPI_1Extension::GetExtensionVersion(HSE_VERSION_INFO* pVer) { // Вызов метода базового класса CHttpServer::GetExtensionVersion(pVer); // Загрузка строки описания TCHAR sz[HSE_MAX_EXT_DLL_NAME_LEN+1]; ISAPIVERIFY(::LoadString(AfxGetResourceHandle(), // Макро - если IDS_SERVER, sz, HSE_MAX_EXT_DLL_NAME_LEN)); // 0,то завершение _tcscpy(pVer->lpszExtensionDesc, sz); return TRUE; } BOOL CMyISAPI_1Extension::TerminateExtension(DWORD dwFlags) { // Метод класса CHttpServer - позволяет выполнить завершение // потоков и работы ISAPI-расширения return TRUE; } // CMyISAPI_1Extension : методы обработчики // Код формируемой HTML-страницы записывается методом Default // в поток вывода void CMyISAPI_1Extension::Default(CHttpServerContext* pCtxt) { StartContent(pCtxt); // Начало HTML-страницы WriteTitle(pCtxt); // Формирование значения тега TITLE // _T - для Unocode конвертируется в L *pCtxt << _T(" HTML-page from "); // Первая строка //HTML-страницы *pCtxt << _T("ISAPI-application "); // Формирование строки HTML-документа для отображения формы *pCtxt << _T("<FORM> <INPUT TYPE='text' SISE=30 </FORM>"); EndContent(pCtxt); // Завершение HTML-страницы } // Следующие строки вставляются мастером // ISAPI Extension Wizard // только на тот случай, если ISAPI-расширение не будет // использовать MFC-бибиотеку. // В противном случае эти строки можно удалить /**** static HINSTANCE g_hInstance; HINSTANCE AFXISAPI AfxGetResourceHandle() { return g_hInstance;} BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ulReason, // Точка LPVOID lpReserved) // входа в DLL-модуль { if (ulReason == DLL_PROCESS_ATTACH) { g_hInstance = hInst; } return TRUE; } ****/

Листинг 28.1.
Закрыть окно





// Заголовочный файл MyISAPI_1.h

#pragma once

#include "resource.h"

class CMyISAPI_1Extension : public CHttpServer

{

public:

CMyISAPI_1Extension(); // Конструктор

~CMyISAPI_1Extension();



public:

virtual BOOL GetExtensionVersion(HSE_VERSION_INFO* pVer);

virtual BOOL TerminateExtension(DWORD dwFlags);

void Default(CHttpServerContext* pCtxt);

DECLARE_PARSE_MAP()

};

// Файл реализации MyISAPI_1.cpp

#include "stdafx.h"

#include "MyISAPI_1.h"

CWinApp theApp; // Объект "приложение"

BEGIN_PARSE_MAP(CMyISAPI_1Extension, CHttpServer) // Таблица

// обработки команды

// TODO: место для определения ON_PARSE_COMMAND() и

// ON_PARSE_COMMAND_PARAMS()

ON_PARSE_COMMAND(Default, CMyISAPI_1Extension, ITS_EMPTY)

DEFAULT_PARSE_COMMAND(Default, CMyISAPI_1Extension)

END_PARSE_MAP(CMyISAPI_1Extension)

CMyISAPI_1Extension theExtension; // Только один объект

//ISAPI-расширение класса,

// наследуемого от CHttpServer

CMyISAPI_1Extension::CMyISAPI_1Extension(){ } // Конструктор

CMyISAPI_1Extension::~CMyISAPI_1Extension() { }

BOOL CMyISAPI_1Extension::GetExtensionVersion(HSE_VERSION_INFO* pVer)

{ // Вызов метода базового класса

CHttpServer::GetExtensionVersion(pVer);

// Загрузка строки описания

TCHAR sz[HSE_MAX_EXT_DLL_NAME_LEN+1];

ISAPIVERIFY(::LoadString(AfxGetResourceHandle(), // Макро - если

IDS_SERVER, sz, HSE_MAX_EXT_DLL_NAME_LEN)); // 0,то завершение

_tcscpy(pVer->lpszExtensionDesc, sz);

return TRUE;

}

BOOL CMyISAPI_1Extension::TerminateExtension(DWORD dwFlags)

{ // Метод класса CHttpServer - позволяет выполнить завершение

// потоков и работы ISAPI-расширения

return TRUE;

}

// CMyISAPI_1Extension : методы обработчики

// Код формируемой HTML- страницы записывается методом Default

// в поток вывода

void CMyISAPI_1Extension::Default(CHttpServerContext* pCtxt)

{

StartContent(pCtxt); // Начало HTML-страницы

WriteTitle(pCtxt); // Формирование значения тега TITLE

// _T - для Unocode конвертируется в L


Содержание раздела