Проблемы с HtmlHelp API.

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Проблемы с HtmlHelp API.

Romeo » 21 фев 2005, 15:17

Проблема разрешилась. Всё дело было в хэлпе и, похоже, это глюк Microsoft. Для того, чтобы больше никто не наступил эти грабли: если такой параметр , как "имя окна" в проекте хэлпа содержит пробел, HtmlHelp начинает глючить. Симптомы описаны выше.

Romeo » 17 фев 2005, 17:52

Фишка в том, что HtmlHelp работает сейчас так, будто никаких уточнений в спецификации не было, нет и не будет. Т.е. дали в качастве hwndCaller дискриптор десктопа - десктоп и активируется после закрытия хэлпа, а со всех остальных окон фокус снимается. Мутное это дело - спецификация copyright by Microsoft :)

Eugie » 17 фев 2005, 16:37

Ну, куда ОС вернет фокус в случае GetDesktopWindow() - тут еще бабушка надвое сказала... ИМХО, в этом случае ОС сама решает, куда его вернуть, так я понимаю. А вот почему не работает в случае явного указания окна-владельца - это вопрос.

Проблемы с HtmlHelp API.

Romeo » 17 фев 2005, 15:46

Проблема такова: есть такая замечательная API, под названием HtmlHelp:

Код: Выделить всё

HWND HtmlHelp(
    HWND    hwndCaller,
    LPCSTR  pszFile,
    UINT    uCommand,
    DWORD   dwData) ;
Первый параметр - дискриптор вызвающего окна. В MSND написано, что если указать в качестве первого параметра дискриптор десктопа, то, цитирую "the operating system determines where focus is returned", то бишь ОС сама определит куда вернуть фокус.

При текущем использовании HtmlHelp используется именно это замечание, но операционная система наперекор документации не возвращает фокус в то окно, откуда хелп был вызван. Не помогает и явное указание дискриптора вызывающего окна. Результат один тот же: после закрытия хелпа, окно приложения остаётся неактивным.

Может кто сталкивался с такой проблемой и знает, чем помочь?

Вернуться к началу