Разработка приложений для Internet


Орган управления Microsoft Web Browser


После того, как вы вставите орган управления Microsoft Web Browser в проект, он станет доступен в панели инструментов разработки диалоговых панелей. Выберите в окне Project Workspace страницу ResourceView (рис. 4.6). Как видите, приложение имеет три типа ресурсов - диалоговую панель IDD_LOOK_DIALOG, пиктограмму IDR_MAINFRAME и ресурс с описанием версии приложения VS_VERSION_INFO. Это стандартный набор ресурсов приложения с диалоговым интерфейсом, созданного при помощи MFC AppWizard.

Рис. 4.6. Ресурсы приложения Look

Загрузите в редактор ресурсов диалоговую панель IDD_LOOK_DIALOG приложения Look. Если панель инструментов Controls не появилась на экране, откройте ее. Для этого выберите из меню View главного окна Microsoft Visual C++ строку Toolbars. На экране появится диалоговая панель Toolbars (рис. 4.7). Найдите в списке Toolbars переключатель Controls и включите его. Затем нажмите кнопку Close.

Если в списке Toolbars вы не смогли обнаружить переключатель Controls, проверьте, загружена ли диалоговая панель в окно редактирования. Панели управления Microsoft Visual C++ являются контекстно-зависимыми. При работе с различными объектами доступны разные панели управления.

Рис. 4.7. Диалоговая панель Toolbars

Измените диалоговую панель приложения Look в соответствии с листингом 4.х. На рисунке 4.8 мы представили вид диалоговой панели IDD_LOOK_DIALOG в редакторе ресурсов.

Рис. 4.8. Диалоговая панель Look

В верхней части диалоговой панели IDD_LOOK_DIALOG поместите поле редактирования IDC_TITLE_BAR. В нем будет отображаться заголовок просматриваемой страницы WWW. Слева от поля редактирования поместите текстовую строку Title.

Непосредственно под полем IDC_TITLE_BAR разместите список IDC_COMBO_ADDRESS для выбора адреса URL. В списке Address введите адреса URL серверов WWW, которые можно посетить нашим навигатором. Мы использовали следующие адреса серверов:

http://www.glasnet.ru/~frolov



http://www.dials.ccas.ru/frolov

http://www.microsoft.com/

http://www.dials.ccas.ru/


Первые два адреса из представленного списка, указывают на сервер WWW авторов этой книги. Третий адрес принадлежит компании Microsoft, а последний, четвертый адрес, - фирме АО “ДиалогНаука”.

Вы можете ввести в этом списке адреса других, известных вам серверов, которые вы желаете посетить с помощью навигатора Look. Конечно, жестко “зашивать” адреса серверов WWW в приложении плохо, но нашей задачей является не создание законченного приложения, а изучение органа управления Microsoft Web Browser.

В дальнейшем вы можете расширить приложение Look и хранить адреса серверов в базе данных, организовав к ней доступ через драйвер ODBC или интерфейс DAO. Пример работы с базами данных через драйвера ODBC с помощью классов MFC мы приводили в 28 томе серии “Библиотека системного программиста”.

Слева от списка IDC_COMBO_ADDRESS расположите текстовую строку Address. А справа разместите четыре кнопки Navigate, Refresh, Stop и Exit. Присвойте им соответственно идентификаторы IDC_NAVIGATE, IDC_BUTTON_REFRESH, IDC_BUTTON_STOP и IDOK.

Обратите внимание на органы управления, представленные в панели инструментов Controls. В ней появилась новая пиктограмма
 (рис. 4.9), которая и представляет Microsoft Web Browser Control. Если в диалоговой панели Toolbars установлен переключатель Show ToolTips, который включает режим кратких подсказок, и вы поместите на указатель мыши на пиктограмму
, то через некоторое время появится название этого органа управления - Microsoft Web Browser.



Рис. 4.9. Панель инструментов Controls

Таким образом, вы можете разместить окно Microsoft Web Browser Control в обычной диалоговой панели точно также, как вы размещаете на ней текстовую строку, кнопку или переключатель. Поместите орган управления Microsoft Web Browser Control в центре диалоговой панели IDD_LOOK_DIALOG и присвойте ему идентификатор IDC_EXPLORER.

Как вы увидите позже, когда навигатор “Microsoft Web Browser Control” не отображает никакой информации, он имеет серый цвет и полностью сливается с самой диалоговой панелью. Чтобы выделить окно навигатора, создайте вокруг него группу с текстом World Wide Web. Эта группа будет отображаться как тонкая рамка с текстом в левом верхнем углу.



Непосредственно под навигатором IDC_EXPLORER разместите поле редактирования IDC_STATUS_TEXT, дополнительно обозначив его текстовой строкой Status и линейный индикатор IDC_PROGRESS с текстовой строкой Progress.

Поля редактирования IDC_TITLE_BAR и IDC_STATUS_TEXT будут использоваться только для отображения текста, поэтому вы можете указать для них в панели свойств атрибут Read-Only.

Файл ресурсов приложения Look представлен в листинге 4.5. В нем вы найдете шаблон диалоговой панели IDD_LOOK_DIALOG, команды для включения в ресурсы пиктограмм, информационный ресурс VS_VERSION_INFO и другие вспомогательные команды.

Листинг 4.5. Файл Look.rc

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS

//////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "afxres.h"

//////////////////////////////////////////////////////////////

#undef APSTUDIO_READONLY_SYMBOLS

//////////////////////////////////////////////////////////////

// Русские ресурсы

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

   #ifdef _WIN32

      LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

      #pragma code_page(1251)

   #endif //_WIN32

#ifdef APSTUDIO_INVOKED

//////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE DISCARDABLE

BEGIN

    "resource.h\0"

END

2 TEXTINCLUDE DISCARDABLE

BEGIN

    "#include ""afxres.h""\r\n"

    "\0"

END

3 TEXTINCLUDE DISCARDABLE

BEGIN

    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"

    "#define _AFX_NO_OLE_RESOURCES\r\n"

    "#define _AFX_NO_TRACKER_RESOURCES\r\n"

    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"

    "\r\n"

    "#if !defined(AFX_RESOURCE_DLL) ||

        defined(AFX_TARG_ENU)\r\n"



    "#ifdef _WIN32\r\n"

    "LANGUAGE 9, 1\r\n"

    "#pragma code_page(1252)\r\n"

    "#endif\r\n"

    "#include ""res\\Look.rc2\r\n"

    "#include ""afxres.rc\r\n"

    "#endif\0"

END

#endif    // APSTUDIO_INVOKED

//////////////////////////////////////////////////////////////

//

// Пиктограмма приложения

//

IDR_MAINFRAME         ICON    DISCARDABLE     "res\\Look.ico"

//////////////////////////////////////////////////////////////

//

// Диалоговая панель IDD_LOOK_DIALOG

//

IDD_LOOK_DIALOG DIALOGEX 0, 0, 444, 253

STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION

EXSTYLE WS_EX_APPWINDOW

CAPTION "Look"

FONT 8, "MS Sans Serif"

BEGIN

    CONTROL         "",IDC_EXPLORER,

                    "{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}",

                    WS_TABSTOP,10,44,425,180

    COMBOBOX        IDC_COMBO_ADDRESS,

                    47,20,185,50,CBS_DROPDOWN | CBS_SORT |

                    WS_VSCROLL | WS_GROUP | WS_TABSTOP

    PUSHBUTTON      "Refresh",IDC_BUTTON_REFRESH,285,20,40,15

    PUSHBUTTON      "Stop",IDC_BUTTON_STOP,330,20,40,15

    GROUPBOX        "World Wide Web",IDC_STATIC,5,34,435,195

    LTEXT           "Address:",IDC_STATIC,8,22,28,8

    CONTROL         "Progress1",IDC_PROGRESS,

                    "msctls_progress32",WS_BORDER,

                    327,236,112,12

    EDITTEXT        IDC_STATUS_TEXT,47,236,224,12,

                    ES_AUTOHSCROLL | ES_READONLY

    EDITTEXT        IDC_TITLE_BAR,47,3,392,13,

                    ES_AUTOHSCROLL | ES_READONLY

    LTEXT           "Title:",IDC_STATIC,8,6,16,8

    LTEXT           "Status:",IDC_STATIC,5,238,23,8

    LTEXT           "Progress:",IDC_STATIC,293,238,30,8

    PUSHBUTTON      "Navigate",IDC_NAVIGATE,240,20,40,15



    PUSHBUTTON      "Exit",IDOK,393,21,44,14

END

#ifndef _MAC

//////////////////////////////////////////////////////////////

//

// Информация о приложении

//

VS_VERSION_INFO VERSIONINFO

 FILEVERSION 1,0,0,1

 PRODUCTVERSION 1,0,0,1

 FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

 FILEFLAGS 0x1L

#else

 FILEFLAGS 0x0L

#endif

 FILEOS 0x4L

 FILETYPE 0x1L

 FILESUBTYPE 0x0L

BEGIN

    BLOCK "StringFileInfo"

    BEGIN

        BLOCK "040904B0"

        BEGIN

            VALUE "CompanyName", "\0"

            VALUE "FileDescription", "LOOK MFC Application\0"

            VALUE "FileVersion", "1, 0, 0, 1\0"

            VALUE "InternalName", "LOOK\0"

            VALUE "LegalCopyright", "Copyright © 1997\0"

            VALUE "LegalTrademarks", "\0"

            VALUE "OriginalFilename", "LOOK.EXE\0"

            VALUE "ProductName", "LOOK Application\0"

            VALUE "ProductVersion", "1, 0, 0, 1\0"

        END

    END

    BLOCK "VarFileInfo"

    BEGIN

        VALUE "Translation", 0x409, 1200

    END

END

#endif    // !_MAC

//////////////////////////////////////////////////////////////

//

// DESIGNINFO

//

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

    IDD_LOOK_DIALOG, DIALOG

    BEGIN

        LEFTMARGIN, 7

        RIGHTMARGIN, 437

        TOPMARGIN, 7

        BOTTOMMARGIN, 246

    END

END

#endif    // APSTUDIO_INVOKED

//////////////////////////////////////////////////////////////

//

// Данные для иинициализации диалоговой панели IDD_LOOK_DIALOG

//

IDD_LOOK_DIALOG DLGINIT

BEGIN

   IDC_EXPLORER, 0x376, 128, 0

       0x0000, 0x0000, 0x002c, 0x0000, 0x027e, 0x0000, 0x0125,

       0x0000, 0x0001, 0x0000, 0x8201, 0x0000, 0x0000, 0x0000,



       0x0000, 0x0000, 0xffff, 0xffff, 0x0000, 0x0000, 0x002c,

       0x0000, 0x0000, 0x0000, 0x004c, 0x0000, 0x1401, 0x0002,

       0x0000, 0x0000, 0x00c0, 0x0000, 0x0000, 0x4600, 0x0000,

       0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,

       0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,

       0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,

       0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6248,

       0x004b,

   IDC_COMBO_ADDRESS, 0x403, 30, 0

       0x7468, 0x7074, 0x2f3a, 0x772f, 0x7777, 0x672e, 0x616c,

       0x6e73, 0x7465, 0x722e, 0x2f75, 0x667e, 0x6f72, 0x6f6c,

       0x0076,

   IDC_COMBO_ADDRESS, 0x403, 32, 0

       0x7468, 0x7074, 0x2f3a, 0x772f, 0x7777, 0x642e, 0x6169,

       0x736c, 0x632e, 0x6163, 0x2e73, 0x7572, 0x662f, 0x6f72,

       0x6f6c, 0x0076,

   IDC_COMBO_ADDRESS, 0x403, 26, 0

       0x7468, 0x7074, 0x2f3a, 0x772f, 0x7777, 0x642e, 0x6169,

       0x736c, 0x632e, 0x6163, 0x2e73, 0x7572, 0x002f,

   IDC_COMBO_ADDRESS, 0x403, 26, 0

       0x7468, 0x7074, 0x2f3a, 0x772f, 0x7777, 0x6d2e, 0x6369,

       0x6f72, 0x6f73, 0x7466, 0x632e, 0x6d6f, 0x002f,

   IDC_COMBO_ADDRESS, 0x403, 20, 0

       0x7468, 0x7074, 0x2f3a, 0x772f, 0x7777, 0x6d2e, 0x7063,

       0x632e, 0x6d6f, 0x002f, 0

END

#endif   

//////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

   ///////////////////////////////////////////////////////////

   //

   // Generated from the TEXTINCLUDE 3 resource.

   //

   #define _AFX_NO_SPLITTER_RESOURCES

   #define _AFX_NO_OLE_RESOURCES

   #define _AFX_NO_TRACKER_RESOURCES

   #define _AFX_NO_PROPERTY_RESOURCES

   #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

      #ifdef _WIN32

         LANGUAGE 9, 1

         #pragma code_page(1252)

      #endif

      #include "res\Look.rc2"

      #include "afxres.rc"

   #endif

   ///////////////////////////////////////////////////////////

#endif    // not APSTUDIO_INVOKED



Идентификаторы ресурсов приложения Look определены в файле resource.h. Этот файл создается автоматически редактором ресурсов Microsoft Visual C++. Мы привели исходный текст файла resource.h в листинге 4.6.

Листинг 4.6. Файл resource.h

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by Look.rc

//

#define IDD_LOOK_DIALOG                 102

#define IDR_MAINFRAME                   128

#define IDC_EXPLORER                    1000

#define IDC_BUTTON_BACK                 1002

#define IDC_BUTTON_NEXT                 1003

#define IDC_PROGRESS                    1003

#define IDC_BUTTON_REFRESH              1004

#define IDC_BUTTON_STOP                 1005

#define IDC_STATUS_TEXT                 1006

#define IDC_TITLE_BAR                   1007

#define IDC_NAVIGATE                    1008

#define IDC_COMBO_ADDRESS               1012

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

   #ifndef APSTUDIO_READONLY_SYMBOLS

      #define _APS_NEXT_RESOURCE_VALUE        131

      #define _APS_NEXT_COMMAND_VALUE         32771

      #define _APS_NEXT_CONTROL_VALUE         1010

      #define _APS_NEXT_SYMED_VALUE           101

   #endif

#endif


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