Изучение конкретного примера. Web-страница с информацией о гостиницах.
Чтобы в новом проекте (он расположен в каталоге Demos\AcmeWeb) воспользоваться кодом, перенесенным на C++, (этот код содержится в файле WebForml.aspx.h, хранящемся в папке CaseStudy\AcmeWeb), выполните следующие действия.
- Скопируйте файл WebForml.aspx.h из каталога CaseStudy\AcmeWeb в каталог Demos\AcmeWeb, в котором расположен новый проект.
- Откройте новый проект, если он еще не открыт. Для этого войдите в каталог Demos\AcmeWeb и дважды щелкните на файле AcmeWeb.sin.
- В окне поиска решения (Solution Explorer), щелкните правой кнопкой мыши на узле Header Files (Заголовочные файлы) (Этот узел находится в проекте Acme Web). Теперь из контекстного меню выберите команду Add (Добавить) и затем Add Existing Item (Добавить существующий элемент). После этого дважды щелкните левой кнопкой мыши на файле WebForml.aspx.h.
- Удалите файл AcmeWeb.h, который в проекте не используется. Для этого выделите этот файл в окне поиска решения (Solution Explorer) и нажмите клавишу Delete (Удалить). Поскольку файл AcmeWeb.h больше не требуется вообще, его можно удалить и из каталога \Demos\AcmeWeb. С этой целью можно использовать и Проводник Windows (Windows Explorer).
- Отредактируйте файл AcmeWeb.срр. Удалите директиву #include, которая включает файл AcmeWeb.h. Добавьте директиву #include, чтобы включить файл WebForml.aspx.h. Вскоре мы добавим в проект еще один заголовочный файл, который называется Global.азах.h. Включите его в текущий файл при помощи директивы #include.
// Это – основной файл динамически подключаемой библиотеки (DLL). #include "stdafx.h" #include "Global.asax.h" #include "WebForml.aspx h"
Ниже приведен исходный файл WebForml.aspx.h. Обратите внимание, что для извлечения объекта HotelBroker используется статическое поле Global::hotelBroker. Вскоре мы увидим, что этот объект создается методом Application_Start объекта Global (Глобальный), который определен в исходном файле Global.asax.h.
//WebForml.aspx.h namespace AcmeWeb // пространство имен AcmeWeb { public _gc class WebForml: public System::Web::UI::Page // класс сборщика мусора WebForml: // общедоступная Система::Сеть::Пользовательский // интерфейс::Страница { protected: // защищенный System::Web::UI::WebControls::Label *Labell; System::Web::UI::WebControls::Label *Label2; System::Web::UI::WebControls::DropDownList *listCities; System::Web::UI::WebControls::DropDownList *listHotels; private: // частный static HotelBroker *hotelBroker; // статический public: WebForml() { Page::Init += new System::EventHandler( this, Page_Init); } private: // частный void Page_Load(Object *sender, System::EventArgs *e) { if (HsPostBack) { hotelBroker = Global:rhotelBroker; ArrayList *cities = hotelBroker › GetCities(); listCities › DataSource = cities; // города ArrayList *hotels = hotelBroker › GetHotels; dynamic_cast<String *> // Строка (cities › get_Item(0))); // города BindHotels(hotels); // гостиницы DataBind(); } } };