Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на Visual С++

  Все выпуски  

Программирование на Visual С++ - No. 56 (Поиск в MSDN)


Служба Рассылок Subscribe.Ru

  ПРОГРАММИРОВАНИЕ    НА    V I S U A L   C + +
РАССЫЛКА САЙТА       
RSDN.RU  

    Выпуск No.56 от 2 декабря 2001 г.

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN , НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Здравствуйте, уважаемые подписчики!


 CТАТЬЯ

Поиск в MSDN

MSDN - это библия Windows-разработчика. В ней содержится огромное количество важной и полезной информации по всем основным продуктам и технологиям фирмы Microsoft. Но когда информации накапливается слишком много, встаёт другая проблема - проблема поиска именно тех данных, которые требуются в данный момент. В этой статье мы поговорим о том, как искать нужную информацию в MSDN.

ПРИМЕЧАНИЕ
Далее речь пойдёт о той версии MSDN, которая распространяется на дисках и используется в качестве хелпа в среде разработки Visual C++. Тем не менее, некоторые рекомендации можно с успехом применять при поиске в Интернете на сайте MSDN Online.
Вкладка Search

Базовым инструментом для поиска информации в MSDN служит вкладка Search навигационной панели. Посмотрим, какие средства она нам предоставляет.

Вкладка Search

В верхней части вкладки Search находится поле ввода "Type in word(s) to search for". Оно позволяет вводить и выполнять запросы на поиск информации. Искать можно в статьях MSDN, в заголовках статей (флажок "Search titles only") или в статьях, найденных по предыдущему поисковому запросу (флажок "Search previous results"). Чтобы выполнить запрос, нажмите Enter (или щёлкните по кнопке "List Topics"). Появится список статей, удовлетворяющих запросу. Перейти к любой статье в списке можно, дважды щёлкнув по ней левой клавишей мыши. Можно также выделить нужную статью и щёлкнуть по кнопке "Display". Для удобства список статей можно сортировать по названию, разделу или рангу (то есть по степени соответствия запросу). Для этого нужно щёлкнуть по заголовку соответствующего столбца списка.

СОВЕТ
Если вы нашли статью, которая вас заинтересовала, посмотрите, где она находится в оглавлении (для этого нужно нажать кнопку Locate на панели инструментов). Возможно, рядом с ней вы найдёте несколько похожих статей, которые вам пригодятся, или даже целый раздел, посвящённый интересующей вас теме.
Синтаксис запросов

В простейшем случае запрос может состоять из одного-единственного слова. Результатом будет список статей, в которых это слово встречается. При поиске не учитывается регистр букв, поэтому запросы "style", "STYLE" и даже "StYlE" дадут одинаковый результат. Слова, которые вы вводите, могут состоять из любых букв и цифр. Использовать знаки препинания допускается, но они игнорируются при поиске.

Введённое вами слово разыскивается именно в той грамматической форме, в которой вы его набрали. Если вы хотите, чтобы учитывались все возможные формы слова, установите флажок "Match similar words" в нижней части вкладки Search. Если установить этот флажок, то по запросу "develop" будут также обнаружены статьи со словами "developed", "developer" и даже "development".

Можно искать в MSDN не только фиксированное слово, но и фиксированную фразу. Для этого фразу нужно заключить в двойные кавычки. Как и в случае с отдельными словами, можно использовать флажок "Match similar words" для поиска фразы во всех возможный грамматических формах. Если установить этот флажок, то запрос "create dialog" отыщет также статьи с фразами "creating dialog", "created dialog", "create dialogs" и т. п.

В словах можно использовать специальные символы "*" и "?". Они имеют тот же смысл, что и в командном языке Windows: "?" обозначает одну произвольную букву, а "*" - любую последовательность букв. Например, вы можете быстро найти все статьи, в которых рассказывается об уведомлениях элемента ListView, задав запрос "LVN_*".

Для более тонкого отбора нужных статей используются операторы AND, OR, NOT и NEAR. Они вводятся прямо с клавиатуры или из меню, которое появляется при щелчке на стрелочке, расположенной справа от окна с запросом.

ПРЕДУПРЕЖДЕНИЕ
Операторы AND, OR и NOT нельзя заменять на позаимствованные из языка C символы &, | и !. Хотя в документации утверждается, что это допустимо, ваши запросы не будут работать.

С помощью операторов можно связывать как отдельные слова, так и заключённые в кавычки фиксированные фразы. Операторы AND, OR и NOT имеют стандартный смысл "И", "ИЛИ" и "НЕ", а оператор NEAR означает, что связанные им слова (фразы) должны находиться недалеко (в пределах 8 слов) друг от друга. Например, можно задать запрос "debug NEAR release NEAR build" для поиска статей об отличиях отладочной и финальной версии программы в Visual C++. Если вы опускаете оператор между словами, считается, что это оператор AND.

СОВЕТ
Обратите особое внимание на оператор NEAR. В MSDN содержатся десятки тысяч статей, многие из них очень большие. Даже если вы объедините несколько слов оператором AND, они могут встретиться в статье, которая совершенно не относится к интересующей вас теме. Использование NEAR существенно повышает вероятность найти именно то, что вам нужно.

Запросы с операторами всегда читаются слева направо. Никаких приоритетов для операторов не вводится. Чтобы изменить порядок обработки запроса, можно использовать круглые скобки.

Подсветка результатов поиска

Чтобы определить, насколько найденные статьи соответствуют нашим нуждам, часто бывает удобно включить подсветку слов или фраз, которые совпали с нашим запросом. Для этого нужно установить галочку Highlights в меню View.

Подмножества

MSDN часто ругают за то, что в ней вся информация свалена в кучу. Похожие функции есть и в Win32 API, и в MFC, и в Java, и в VB... Попробуйте ввести в индексе функцию типа "print", и вы поймёте, что я имею в виду. К счастью, нас никто не заставляет работать с библиотекой MSDN целиком. Вы можете определить в ней некоторое подмножество разделов, с которым будут работать оглавление, индекс и поиск. Используя подмножества, вы можете существенно сузить круг поиска нужной информации и быстрее найти то, что вам нужно.

Подмножество задаётся в выпадающем списке "Active Subset" в самой верхней части навигационной панели MSDN. Пункт "(Entire Collection)" соответствует всей библиотеке целиком. Кроме этого, в MSDN обычно присутствует несколько удобных предопределённых подмножеств, которыми вы можете воспользоваться. Например, подмножество "MSDN, Knowledge Base" ограничивает круги ваших поисков Базой Знаний фирмы Microsoft (о ней мы подробно поговорим в следующем разделе). А подмножество "Visual C++, Platform SDK, and Enterprise Docs" должно понравится разработчику на языке C++, так как содержит документацию на сам язык C++ и его стандартную библиотеку, среду Visual C++, Win32 API и библиотеки MFC и ATL.

Если предопределённых подмножеств недостаточно, всегда можно определить свои собственные. Для этого предназначен пункт меню "View0>Define Subset..." (определить подмножество).

Диалог Define Subset

В открывшемся диалоге "Define Subset" вы увидите два дерева. В правом показаны разделы, принадлежащие подмножеству, а в левом - не входящие в него. Раскрывать и сворачивать подразделы можно двойным щелчком левой клавиши мыши. Для перемещения разделов в подмножество и из него используйте кнопки Add, Add All, Remove и Remove All. Из списка "Select subset to display" выбирается подмножество, которое вы будете редактировать (по умолчанию выбирается "New" - новое подмножество). Здесь же можно удалить ненужное подмножество, выбрав его из списка и нажав Delete. Если вы создали новое подмножество, не забудьте назначить ему название в поле "Save new subset as" и сохранить его, нажав Save.

Поиск в Базе Знаний

База Знаний (Knowledge Base, KB) - это огромная коллекция технических документов. Эти документы дополняют документацию, описывая решения конкретных проблем, которые могут возникнуть у пользователя или программиста. В Базе Знаний содержатся ответы на многие вопросы, нужно только найти их там.

Каждая статья в KB содержит несколько специальных ключевых слов, которые её довольно точно классифицируют. Все эти слова начинаются с префикса kb. Задавая одно или несколько таких ключевых слов в поисковом запросе, можно вычленить из Базы именно те статьи, которые вам требуются. Список основных ключевых слов приведён в последующих разделах.

Категории статей

Каждая статья в Базе Знаний относится к одной из следующих категорий:

  • HOWTO. Статья описывает решение какой-либо задачи по шагам.
  • INFO. В статье содержится дополнительная информация по продуктам или технологиям фирмы Микрософт, которая не вошла в официальную документацию.
  • PRB. В статье описывается проблема, с которой вы можете столкнуться, и пути её обхода.
  • BUG. В статье задокументирован баг в продукте или технологии фирмы Микрософт.
  • FIX. Статья описывает баг, который присутствовал в предыдущей версии продукта или технологии, но исправлен в текущей версии.
  • SAMPLE. Законченная демонстрационная программа.
  • FAQ. Ответ на часто задаваемый вопрос.
  • DOC. Поправки или дополнения к официальной документации на продукты и технологии фирмы Микрософт.

Если вы ищете в Базе Знаний статьи определённой категории (категорий), вы можете использовать в запросе специальные ключевые слова.

Категория Ключевое слово
HOWTO kbHOWTO
INFO kbINFO
PRB kbPRB
BUG kbBUG
FIX kbFIX
SAMPLE kbSAMPLE
FAQ kbFAQ
DOC kbDOC
Тематика

Ключевые слова, связанные с тематикой, можно комбинировать с ключевыми словами, соответствующими конкретным технологиям. Это позволит получить результаты, более точно соответствующие вашим нуждам. Например, если вас интересует безопасность в ASP, вы можете задать запрос "kbASP kbSecurity". Если вас интересует отладка DLL, используйте запрос "kbDLL kbDebug". И так далее.

Тематика Ключевое слово
Отладка kbDebug
Сообщения об ошибках kbErrMsg
Скриптовые языки kbScript
Незаконченные фрагменты кода (code snippets) kbCodeSnippet
Использование визардов kbwizard
Безопасность kbSecurity
Производительность kbPerformance
Масштабируемость kbScalability
Развёртывание приложений kbDeployment
Локализация kbLocalization
Аппаратные платформы
Тема Ключевое слово
Платформа Intel x86 kbx86
Эмуляция Intel x86 kbEmulatex86
DEC Alpha kbDecAlpha
Компьютеры Macintosh kbMAC
Платформы на базе чипов MIPS kbMIPS
Процессоры PowerPC kbPowerPC
Процессоры Hitachi SuperH kbSuperH
Операционные системы
Тема Ключевое слово
Всё семейство ОС Windows kbOSWin, kbWinOS
ОС Windows NT kbNTOS
ОС Windows NT 4.0 kbNTOS400
ОС Windows 2000 kbWinOS2000
ОС Windows 95 kbWinOS95
ОС Windows 98 kbWinOS98
ОС Windows CE kbWinCE
Unix kbOSUNIX, kbUNIX
Язык C++ и компилятор фирмы Microsoft
Тема Ключевое слово
Только язык C (без C++) kbConly
Только язык C++ kbCPPonly
Синтаксис языка C kbLangC
Синтаксис языка C++ kbLangCPP
Библиотека C run-time (CRT) kbCRT
Обработка исключений в C++ kbExceptHandCPP
Шаблоны kbtemplate
Standard Template Library (STL) kbSTL
Код, генерируемый компилятором kbCodeGen
Компилятор kbCompiler
Линкер kbLinker
Утилита Nmake kbNMake
Интегрированная среда разработки
Тема Ключевое слово
Общие
Visual Studio (все версии) kbVS
Visual Studio 97 kbVS97
Visual Studio 6.0 kbVS600
Среда разработки Developer Studio kbDevStudio
Интегрированная среда разработки (IDE) kbIDE
Visual C++
Visual C++ kbVC
Visual C++, версия 6.0 kbVC600
Объектная модель Visual C++ kbVCObj
Редактор кода kbEditor
Редактор ресурсов kbResourceEd
ClassViewer в Visual C++ kbClassView
Class Wizard kbClassWizard
Галерея компонентов (Component Gallery) kbCompGallery
Создание собственных визардов kbCustomWizard
Другие среды
Visual Basic kbVBp
Visual Fox Pro kbVFP
Visual InterDev kbVisID
Visual Source Safe kbSSafe
Инструментарий
Тема Ключевое слово
Различные инструменты kbMiscTools
Инструменты для анализа производительности kbPerformanceTool
Продукты, поставляемые в составе Platform SDK kbSDKPlatform
Windows Kernel Debugger (WinDBG.EXE) kbWinDBG
Visual Analyzer kbVisAnalyzer
Инсталляция
Тема Ключевое слово
Инсталляция приложений на компьютер пользователя kbAppSetup
Проблемы с установкой приложений фирмы Микрософт kbSetup
Microsoft Windows Installer (MSI) kbMSI
Microsoft Windows Installer, версия 1.0 kbMSI100
Microsoft Windows Installer, версия 1.1 kbMSI110
Visual Studio Installer kbVSI
Win32 API
Тема Ключевое слово
Весь Application Programming Interface (API) kbAPI
Структурная обработка исключений в Win32 kbExceptHandSEH
Реестр kbRegistry
Многопоточность kbThread
Динамически подключаемые библиотеки (DLL) kbDLL
Программирование сервисов kbService
Буфер обмена kbClipboard
Файловый ввод/вывод kbFileIO
Работа со строками и строковыми ресурсами kbString
Дата и время kbDateTime
Консоль управления фирмы Микрософт (Microsoft Management Console, MMC) kbMMC
Система помощи в старом формате (WinHelp) kbWinHelp
Система помощи на базе HTML kbHTMLHelp
Общие контролы Windows kbCmnCtrls
Стандартные диалоги kbCmnDlg
Создание и использование диалоговых окон kbDlg
Работа с меню kbMenu
Программирование акселераторов ("горячих клавиш") kbKeyAccel
Программирование Drag and Drop kbDragDrop
Графика средствами GDI kbGDI
Печать kbPrinting
Сокеты kbWinsock
COM/DCOM, COM+
Тема Ключевое слово
Модель COM/DCOM
Вся Component Object Model (COM) kbCOMt
Distributed COM (DCOM) kbDCOM
ODL-файлы kbODL
IDL-файлы kbIDL
Компилятор MIDL kbMIDL
Внутрипроцессные COM-серверы kbInprocSvr
Локальные COM-серверы kbLocalSvr
Маршалинг kbMarshal
Лицензирование kbLicensing
Точки соединения (Connection Points) kbConnPts
Подразделения kbApartment
Технологии OLE и ActiveX
Вся технология Object Linking and Embedding (OLE) kbOLE
Все технологии ActiveX kbActiveX
Длительное хранение (persistent storage) в OLE kbPersistSt
Интерфейс IDataObject kbDataObject
События kbActiveXEvents
Составные документы (compound documents) kbCmpDoc
Контейнеры OLE kbContainer
Активизация "по месту" (inplace activation) kbInplaceAct
Активные документы (active documents) kbActiveDocs
Автоматизация приложений kbAutomation
ActiveX-контролы (создание и использование) kbCtrl
ActiveX-контролы (только создание) kbCtrlCreate
COM+ и MTS
Весь COM+ kbCOMPLus
Microsoft Transaction Server (MTS) kbMTS
Асинхронные вызовы COM+ kbCOMPlusAsync
Контексты COM+ kbCOMPlusContext
События COM+ kbCOMPlusLCE
Базы данных
Тема Ключевое слово
Все статьи, посвящённые базам данных kbDatabase
Microsoft Data Access Components (MDAC) kbMDAC
Open Database Connectivity (ODBC) kbODBC
Java Database Connectivity (JDBC) kbJDBC
Data Access Objects (DAO) kbDAO
Data Access Object SDK kbSDKDAO
Ядро JET kbJET
Remote Data Objects (RDO) kbRDO
Remote Data Service (RDS) kbRDS
OLE Database Interface (OLEDB) kbOLEDB
OLEDB-потребители kbConsumer
OLEDB-провайдеры kbProvider
Простой OLE DB-провайдер kbOSP
ActiveX Data Objects (ADO) kbADO
Microsoft SQL Server kbSQLServ
Отладчик T-SQL kbTSQL
Продукты и технологии Oracle kbOracle
Exchange kbXchge
Installable ISAM kbIISAM
Технологии и формат dBASE kbDBase
Excel kbExcel
Access kbAccess
Создание и распространение драйверов для баз данных kbDriver
Интернет
Тема Ключевое слово
Active Server Pages (ASP) kbASP
XML kbXML
Парсер MSMXL (все версии) kbMSXML
Парсер MSMXL, версия 2.0 kbMSXML200
Парсер MSMXL, версия 3.0 kbMSXML300
Internet Service API (ISAPI) kbISAPI
Веб-серверы kbWebServer
Cookies kbCookies
MFC
Тема Ключевое слово
Вся библиотека Microsoft Foundation Classes (MFC) kbMFC
Архитектура документ/представление kbDocView
Многодокументный интерфейс (Multiple Document Interface, MDI) kbMDI
Классы MFC, произведённые от CControlBar kbMFCCtrlBar
Контекстно-зависимая справка kbCSHelp
Программирование панелей инструментов kbToolbar
Разработка пользовательского интерфейса kbUIDesign
Обработка исключений в MFC kbExceptHandMFC
ATL
Тема Ключевое слово
Active Template Library (ATL) kbATL
Ver. 1.1 Active Template Library, версия 1.1 kbATL110
Ver. 2.0 Active Template Library, версия 2.0 kbATL200
Ver. 2.1 Active Template Library, версия 2.1 kbATL210
Ver. 3.0 Active Template Library, версия 3.0 kbATL300
Поддержка окон в ATL kbATLWC
Провайдеры и потребители в ATL kbDTL
Прочее
Тема Ключевое слово
Статьи, написанные группами технической поддержки Микрософт kbDSupport
Общая информация, не относящаяся к программированию kbGenInfo
Взаимодействие с MSDN kbMSDN
Компоненты и драйверы третьих фирм kb3rdparty


 ВОПРОС-ОТВЕТ

Как вызвать скрипт из приложения?

При использовании WebBrowser Вы можете вызывать любые скрипты, расположенные в теле html-страницы. Обращение к скриптам производится через диспетчерский интерфейс, возвращаемый в свойстве Script интерфейса IHTMLDocument.

В следующем примере демонстрируется вызов функции с именем evalute, которая определена в теле html-страницы следующим образом.


<SCRIPT>
function evaluate(x)
{
    alert(x +"= " + eval(x));
}
</SCRIPT>

// Эта функция выполняет скрипт
void CMyHtmlView::OnCallscript()
{
    HRESULT hr;
    LPDISPATCH pDispatch = GetHtmlDocument();
    if( pDispatch == NULL ) return;

    IHTMLDocument* pHtmlDoc;
    hr = pDispatch->QueryInterface( __uuidof( IHTMLDocument ), (void**)&pHtmlDoc );

    LPDISPATCH pScript;
    pHtmlDoc->get_Script( &pScript);
    pScript->AddRef();
    if (SUCCEEDED(hr))
    {
        // Получаем DISPID интересуемой функции
        OLECHAR* szMember = L"evaluate";
        DISPID dispid;

        HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &szMember, 1,
            LOCALE_SYSTEM_DEFAULT, &dispid);

        if (SUCCEEDED(hr))
        {
            // Выполняем
            COleVariant vtResult;
            static BYTE parms[] = VTS_BSTR;

            COleDispatchDriver dispDriver(pScript);
            dispDriver.InvokeHelper(dispid, DISPATCH_METHOD, VT_VARIANT,
                (void*)&vtResult, parms,
                "5+Math.sin(9)");
        }
    }
    pScript->Realease();
    pHtmlDoc->Release();
    pDispatch->Release();
}


 ФОРУМ RSDN - ИЗБРАННОЕ


    Форум: Программирование / Прочее
    Тема: Коллеги, улыбнитесь
    От: adonz
...В продолжение темы:
  • Главная пpогpамма - функции malloc: Пpошу обеспечить выделение 257 килобайт Conventional Memory.
  • Функция malloc - опеpационной системе: Пpошу выделить 257 килобайт Conventional Memory в связи с пpоизводственной необходимостью.
  • Опеpационная система - главной пpогpамме: Выделить 257 килобайт Conventional Memory не пpедставляется возможным в связи с отсутствием таковых. Есть 3 мега Extended. Беpете?
  • Главная пpогpамма - обpаботчику исключений: С памятью облом. Что делать будем?
  • Обpаботчик исключений - пpоцедуpе оптимизации: Hеобходимо добиться экономии памяти за счет более pационального использования системных pесуpсов.
  • Контpоллеp пpеpываний - обpаботчику пpеpываний: Тут это... юзеp кнопку нажал...
  • Главная пpогpамма - обpаботчику пpеpываний: Hе деpгайся! Подеpжит и отпустит.
  • Пpоцедуpа оптимизации - обpаботчику исключений: Готово!
  • Главная пpогpамма - обpаботчику исключений: Hу что там?
  • Обpаботчик исключений - главной пpогpамме: Еще хуже стало. Может, на диск посвопимся?
  • Главная пpогpамма - жесткому диску: Пpошу пpинять на хpанение swap-файл в pазмеpе 257 килобайт.
  • Жесткий диск - главной пpогpамме: Ваша пpосьба не может быть удовлетвоpена за недостатком места.
  • Главная пpогpамма - опеpационной системе: Что еще за глюк? Было же место!
  • Жесткий диск - главной пpогpамме: Hичего не глюк. Вы еще пpошлый swap-файл на 4 мега не забpали. А я, между пpочим, не pезиновый. И даже не stacker'ный.
  • Контpоллеp пpеpываний - обpаботчику пpеpываний: Тут это... юзеp опять кнопку давит...
  • Обpаботчик пpеpываний - PC speaker'у: Hу скажи ему что-нибудь, пусть отвяжется!
  • PC speaker - юзеpу: Биип!
  • Главная пpогpамма - опеpационной системе: Hу может можно чего-нибудь пеpеpаспpеделить?
  • Опеpационная система - главной пpогpамме: Дpугим задачам тоже память нужна. Вам что, General Protection Error схлопотать охота?
  • Главная пpогpамма - хакеpской функции: Hу-ка выясни, кто там отожpал всю память, и выкини их к XTшной матеpи!
  • Контpоллеp пpеpываний - обpаботчику пpеpываний: Тут юзеp Ctrl-Alt-Del жмет!
  • Главная пpогpамма - обpаботчику пpеpываний: Да отpуби ты этому зануде клавиатуpу! Мы тут делом заняты...
  • Хакеpская функция - главной пpогpамме: Опаньки!
  • Главная пpогpамма - опеpационной системе: Hу что там? Сколько памяти свободно?
  • Опеpационная система - главной пpогpамме: 320 Conventional и... ой, куда это Extended Memory Manager делся?
  • Главная пpогpамма - хакеpской функции: Ты что начистила, сволочь?
  • Хакеpская функция - главной пpогpамме: А чо я, чо я? Мне сказали - выкинуть, я и выкидываю!
  • Функция malloc - опеpационной системе: Пpошу выделить 257 килобайт Conventional Memory в связи с пpоизводственной необходимостью.
  • Опеpационная система - главной пpогpамме: Hе могу. У меня в Extended Memory важные данные лежали. И вообще, я с вами скоpо повешусь!
  • Кнопка Reset - пpоцессоpу: Hу что? Доигpались?

  • ... ХОЛОДHЫЙ РЕСТАРТ...

  • Autoexec.bat - главной пpогpамме: Так на чем мы остановились?


Это все на сегодня. Пока!

Алекс Jenter   jenter@rsdn.ru
Duisburg, 2001.    Публикуемые в рассылке материалы принадлежат сайту RSDN.

| Предыдущие выпуски     | Статистика рассылки


RLE Banner Network

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное