Пример переноса стандартного StatusBar'а в приложение выполненное на основе Top Level Form.
Прислал: Ившев Дмитрий  Категория: Интерфейс
StatusBar в приложении на основе Top Level Form.
Просматривая после отпуска материалы конференции, наткнулся на обсуждение возможности отобразить
стандартный StatusBar в приложении на основе Top Level Form. На тот момент я был полностью уверен
в невозможности такого переноса, тем более, что в свое время вынужден был использовать
соответствующий ActiveX. Однако один из участников обсуждения упомянул программы автора Владимира
Яйленко (http://yvs.makeevka.com:8101/index.htm), в которых вроде бы стандартный StatusBar мирно
уживается с Top Level Form. Хотя при ближайшем рассмотрении все весьма достойные приложения
Владимира Яйленко оказались выполненными с использованием Screen’а, решил вернуться к прошлым
опытам. Тем более, что само по себе, переназначение родителя для некоторого дочернего окна -
операция тривиальная. Сложнее было догадаться, как обойти нежелание Fox’а обновлять состояние
StatusBar’а при значении _Screen.Visible=.f. К счастью оказалось, что Fox как обычно больше верит
себе, чем операционной системе. Поэтому оказалось достаточным после манипуляций по переносу окна
StatusBar’а в заранее созданную панель инструментов встроенную в Top Level Form, установить флажок
_Screen.Visible=.t. и скрыть основное окно Fox’а с помощью API-функции ShowWindow().
Пример представлен в виде законченного проекта. Необходимо собрать исполняемый EXE-модуль, который
запустить с помощью команды Выполнить... из меню на кнопке Пуск.
Модуль тестировался под управлением Windows 98SE(VFP6SP5,VFP7)
А что если пpименить BINDEVENT(hWnd,nMessage,oEventHandler,cDelegate)?
hWnd - хэндл окна статусбаpа, полученный методом Дмитрия.
nMessage - некое виндовое сообщение WM_тpатата, пpи котоpом
окно скpинового тулбаpа собственно и отобpажает внутpи себя текст.
Далее понятно... Будет ли такое pаботать для TopLevelForm ?
Методом тыка подобpать WM_тpатата, у меня не получилось :(
Все это надо (таймеp или пеpенос окна), как я понимаю,не от хоpошей жизни.
Hет способа забиндиться на Application.StatusBar_assign().
Влад Колосов
28.11.05 11:44:50
Нельзя ли в нескольких словах объяснить механизм перехвата и отображения сообщений message? Я не
слишком силен в системном программировании, но пример хотелось бы понять.
Влад Колосов
28.11.05 11:57:24
Нельзя ли в нескольких словах объяснить механизм перехвата и отображения сообщений message? Я не
слишком силен в системном программировании, но пример хотелось бы понять.
Влад Колосов
28.11.05 11:57:32
Нельзя ли в нескольких словах объяснить механизм перехвата и отображения сообщений message? Я не
слишком силен в системном программировании, но пример хотелось бы понять.