|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Программирование на Visual C++Выпуск №56 от 2 декабря 2001 г. Здравствуйте, уважаемые подписчики! СТАТЬЯПоиск в MSDN
MSDN – это библия Windows-разработчика. В ней содержится огромное количество важной и полезной информации по всем основным продуктам и технологиям фирмы Microsoft. Но когда информации накапливается слишком много, встаёт другая проблема – проблема поиска именно тех данных, которые требуются в данный момент. В этой статье мы поговорим о том, как искать нужную информацию в MSDN. Вкладка Search Базовым инструментом для поиска информации в MSDN служит вкладка Search навигационной панели. Посмотрим, какие средства она нам предоставляет. Вкладка Search В верхней части вкладки Search находится поле ввода "Type in word(s) to search for". Оно позволяет вводить и выполнять запросы на поиск информации. Искать можно в статьях MSDN, в заголовках статей (флажок "Search titles only") или в статьях, найденных по предыдущему поисковому запросу (флажок "Search previous results"). Чтобы выполнить запрос, нажмите Enter (или щёлкните по кнопке "List Topics"). Появится список статей, удовлетворяющих запросу. Перейти к любой статье в списке можно, дважды щёлкнув по ней левой клавишей мыши. Можно также выделить нужную статью и щёлкнуть по кнопке "Display". Для удобства список статей можно сортировать по названию, разделу или рангу (то есть по степени соответствия запросу). Для этого нужно щёлкнуть по заголовку соответствующего столбца списка. Синтаксис запросов В простейшем случае запрос может состоять из одного-единственного слова. Результатом будет список статей, в которых это слово встречается. При поиске не учитывается регистр букв, поэтому запросы "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 имеют стандартный смысл "И", "ИЛИ" и "НЕ", а оператор NEAR означает, что связанные им слова (фразы) должны находиться недалеко (в пределах 8 слов) друг от друга. Например, можно задать запрос "debug NEAR release NEAR build" для поиска статей об отличиях отладочной и финальной версии программы в Visual C++. Если вы опускаете оператор между словами, считается, что это оператор AND.
Запросы с операторами всегда читаются слева направо. Никаких приоритетов для операторов не вводится. Чтобы изменить порядок обработки запроса, можно использовать круглые скобки. Подсветка результатов поискаЧтобы определить, насколько найденные статьи соответствуют нашим нуждам, часто бывает удобно включить подсветку слов или фраз, которые совпали с нашим запросом. Для этого нужно установить галочку 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. Если предопределённых подмножеств недостаточно, всегда можно определить свои собственные. Для этого предназначен пункт меню "View→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. Поправки или дополнения к официальной документации на продукты и технологии фирмы Микрософт. Если вы ищете в Базе Знаний статьи определённой категории (категорий), вы можете использовать в запросе специальные ключевые слова.
Ключевые слова, связанные с тематикой, можно комбинировать с ключевыми словами, соответствующими конкретным технологиям. Это позволит получить результаты, более точно соответствующие вашим нуждам. Например, если вас интересует безопасность в ASP, вы можете задать запрос "kbASP kbSecurity". Если вас интересует отладка DLL, используйте запрос "kbDLL kbDebug". И так далее.
ВОПРОС-ОТВЕТКак вызвать скрипт из приложения?
При использовании 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 – ИЗБРАННОЕ
…В продолжение темы: • Главная программа – функции malloc: Прошу обеспечить выделение 257 килобайт Conventional Memory. • Функция malloc – операционной системе: Прошу выделить 257 килобайт Conventional Memory в связи с производственной необходимостью. • Операционная система – главной пpограмме: Выделить 257 килобайт Conventional Memory не представляется возможным в связи с отсутствием таковых. Есть 3 мега Extended. Берете? • Главная программа – обработчику исключений: С памятью облом. Что делать будем? • Обработчик исключений – процедуре оптимизации: Необходимо добиться экономии памяти за счет более pационального использования системных ресурсов. • Контроллер прерываний – обработчику прерываний: Тут это… юзер кнопку нажал… • Главная программа – обработчику прерываний: Hе дергайся! Подержит и отпустит. • Процедуpа оптимизации – обработчику исключений: Готово! • Главная программа – обработчику исключений: Ну что там? • Обработчик исключений – главной программе: Еще хуже стало. Может, на диск посвопимся? • Главная программа – жесткому диску: Прошу принять на хpанение swap-файл в размере 257 килобайт. • Жесткий диск – главной программе: Ваша просьба не может быть удовлетворена за недостатком места. • Главная программа – опеpационной системе: Что еще за глюк? Было же место! • Жесткий диск – главной программе: Ничего не глюк. Вы еще прошлый swap-файл на 4 мега не забрали. А я, между пpочим, не резиновый. И даже не stacker'ный. • Контроллер прерываний – обработчику прерываний: Тут это… юзер опять кнопку давит… • Обработчик прерываний – PC speaker'у: Hу скажи ему что-нибудь, пусть отвяжется! • PC speaker – юзеру: Биип! • Главная программа – операционной системе: Ну может можно чего-нибудь перераспределить? • Операционная система – главной программе: Другим задачам тоже память нужна. Вам что, General Protection Error схлопотать охота? • Главная программа – хакерской функции: Ну-ка выясни, кто там отожрал всю память, и выкини их к XTшной матеpи! • Контроллер прерываний – обработчику прерываний: Тут юзер Ctrl-Alt-Del жмет! • Главная программа – обработчику прерываний: Да отруби ты этому зануде клавиатуpу! Мы тут делом заняты… • Хакерская функция – главной программе: Опаньки! • Главная программа – операционной системе: Ну что там? Сколько памяти свободно? • Операционная система – главной программе: 320 Conventional и… ой, куда это Extended Memory Manager делся? • Главная программа – хакерской функции: Ты что начистила, сволочь? • Хакерская функция – главной программе: А чо я, чо я? Мне сказали – выкинуть, я и выкидываю! • Функция malloc – операционной системе: Прошу выделить 257 килобайт Conventional Memory в связи с производственной необходимостью. • Операционная система – главной программе: Не могу. У меня в Extended Memory важные данные лежали. И вообще, я с вами скоро повешусь! • Кнопка Reset – процессору: Ну что? Доигрались? … ХОЛОДHЫЙ РЕСТАРТ… • Autoexec.bat – главной программе: Так на чем мы остановились? Это все на сегодня. Пока! (Алекс Jenter jenter@rsdn.ru) (Duisburg, 2001. Публикуемые в рассылке материалы принадлежат сайту RSDN. ) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|