Орган управления 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