Окончание, начало см. в МК № 33-34, 39 (256-257, 262).
О выпадающих меню
Как это стильно надавил правую крысиную кнопку на окне, а оттуда выпадающее меню! В VB достичь этого совсем несложно. Выпадающее меню создается совершенно так же, как и обычное, с одним исключением его свойству Visible присваивается значение False. После чего следует примерно такой код:
Его можно расшифровать так: «Если на форме отпущена правая кнопка мыши без клавиш Alt, Ctrl или Shift, то вывести выпадающее меню mnuPopUp в точке X, Y с выделенным по умолчанию меню mnuSettings».
О Web-интерфейсе
Нередко встречается и такая проблема после знакомства с продуктом воображения какого-нибудь веб-дизайнера начинает ощущаться смутное, но горячее желание, чтобы и ваша VB-программа тоже имела такой интерактивный вид, чтоб в ней все переливалось от наведения указателя мауса, были гиперссылки etc. Для создания такого извращения (полезно при написании программ-оболочек для CD) можно использовать Microsoft Internet Controls > WebBrowser из окна Проект > Компоненты. Используя метод Navigate или Navigate2 в Form_Load применительно к вашему html-документу, а также события JavaScript onMouseOver и onMouseOut, можно добиться впечатляющего результата. Хорошо себя зарекомендовала связка из двух браузеров, один из которых занимает всю форму и изображает интерфейс программы (кнопки, изменяющиеся при наведении, красивые картинки etc), а другой представляет собой внутреннее окно, в котором происходит отображение сведений о диске. Можно использовать и один браузер, если поработать над фреймами. Одно требование желательно неплохо знать JavaScript или... VBScript. Примечание: файл MS Internet Controls’ов shdocvw.dll позарез нужен для MS Internet Explorer, поэтому его можно не поставлять с программой. Но если вы записываете программу-оболочку на CD, и там хватает места, лучше подстраховаться: добавить и msvbvm60.dll, и shdocvw.dll, и все остальное…
О ShellAbout
Если вам по какой-то непонятной причине неохота разрабатывать About-форму для своей программы (никогда не пойму таких программистов, имхо, создавать и рассматривать такие формы наслаждение), вы можете использовать ShellAbout такую себе хорошую API-функцию. Если вы не знаете, что такое стандартное About-окно Windows, откройте Paint или даже Explorer и выберите меню Справка > О программе. Вот такая небольшая строчка:
вызвала такое вот стильное окошко, не лишенное изящества (см. Рис. 1). Для тех, кто не в курсе, что означает последний аргумент, сообщу: API-функции, когда им нужна картинка, запрашивают handle этой картинки. Передать таковой им вы сможете, разместив его на форме PictureBox с нужной вам картинкой, а потом вызвав от него Picture1.Picture.Handle. Пусть вас не удивляют две точки: Picture1.Picture это объект, который, разумеется, имеет свой свойства и методы. Поэтому, исследуя этот новый control на предмет глюков и перспектив использования, не ленитесь нажимать еще одну точку может обнаружиться что-то интересное! (Примечание: свойство Font тоже балуется подобными вещами.)
О формах Always-On-Top
Некоторые программы вероятно, специально для того, чтобы подольше мозолить нам глаза не только не сворачиваются в трей, но и вообще никуда и никогда не исчезают, постоянно оставаясь «впереди планеты всей». Такие наглые формы называются Always-On-Top. Представьте себе ваш no-move баннер, находящийся Always-On-Top посреди экрана и напоминающий юзеру о том, что совсем неплохо иметь пару-тройку ароматных стелек от китайской компании SamSebeSoon. Здорово, неправда ли? Для этого желательно иметь модуль с таким содержанием:
Используя функцию SetFormPosition c handle вашей формы в одном аргументе и True или False в другом, вы можете заставить форму мозолить или, наоборот, не мозолить (например, после регистрации за энную сумму) юзеру его рецепторную систему.
О звуках
Использовать медленный и тяжелый MediaPlayer-компонент, который к тому же придется поставлять с программой не самый лучший выход. Одно из возможных решений проблемы использовать для файлов .wav и .mid API-функции sndPlaySound. Напишите sndPlaySound FileName.wav, 1, и вы на пару с вашим юзером сможете вовсю наслаждаться третей симфонией Бетховена или пятым альбомом Rammstein. Но не забывайте поставлять этот самый FileName.wav со своей программой!
Оказывается, sndPlaySound потихоньку становится нелегальной API-функцией. Конечно, если вы желаете добиться совместимости вашей программы с прошедшими версиями Windows, лучше его использовать, но если вы помышляете о вечном или хотя бы долговечном лучше использовать PlaySound с похожими аргументами.
О справке
Чтобы добавить справку в программу, нужно как минимум эту справку написать. Затем, с помощью «интуитивно понятного» HTML Help WorkShop, входящего в поставку VB6, перевести написанные html-файлы в файл .chm. Можно это сделать также и с помощью программы htm2chm, ранее описывавшейся на страницах всеми любимого МК. После выполнения всех вышеперечисленных и, заметим, довольно нудных действий добавляете в свою программу туда, куда надо что-нибудь типа Shell “hh “ & App.Path & “\help\help.chm” и можете гордится тем, что у вас теперь все как в лучших домах Филадельфии и Европы.