Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Приложение с поддержкой перетаскивания OLE
Рассмотрим процесс перетаскивания OLE на следующем примере: 1. Создайте новый проект командой File > New Project. Выберите в диалоговом окне New Project значок Standard EXE и нажмите кнопку ОК. 2. Задайте свойству Name формы Form1 значение frmMain, а свойству Caption -значение Перетаскивание OLE. 3. Поместите на форму два текстовых поля. Разместите их рядом друг с другом так, чтобы их высота примерно совпадала с высотой формы. 4. Задайте свойству Name левого текстового поля значение txt1 и очистите его свойство Text. Задайте свойству OLEDragMode значение 1 - Automatic, a свойству MultiLine - значение True. Задайте свойству ScrollBars значение 2 - Vertical. 5. Задайте свойству Name правого текстового поля значение txt2 и очистите его свойство Text. Задайте свойству OLEDragMode значение 1 - Automatic, a свойству MultiLine - значение True. Задайте свойству ScrollBars значение 2 - Vertical. 6. Вставьте следующий фрагмент в процедуру события OLEDragDrop поля txt1:
Private Sub txt1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) If Shift > 0 Then Effect = vbDropEffectCopy Else Effect = vbDropEffectMove End If txt1, Text = Data.GetData(vbCFText) End Sub
7. Вставьте следующий фрагмент в процедуру события OLEStartDrag поля txt1:
Private Sub txt1_OLEStartDrag(Data As DataObject, _ AllowedEffects As Long) Data, SetData txt1.Text, vbCFText End Sub
8. Перейдем к текстовому полю txt2 и наделим его поддержкой перетаскивания. Сначала вставьте следующий фрагмент в процедуру события OLEDragDrop поля txt2:
Private Sub txt1_OLEDragDrop(Data As DataObject, _ Effect As Long, Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Shift > 0 Then Effect = vbDropEffectCopy Else Effect = vbDropEffectMove End If
txt2.Text = Data.GetData(vbCFText) End Sub
9. Вставьте следующий фрагмент в процедуру события OLEStartDrag поля txt2:
Private Sub txt2_OLEStartDrag(Data As DataObject, _ AllowedEffects As Long) Data.SetData txt2.Text, vbCFText End Sub
10. Сохраните и запустите проект. Введите какой-нибудь текст в левом текстовом поле. Вы можете скопировать или переместить его в правое поле путем перетаскивания. Но чтобы увидеть действительно эффектный номер, запустите WordPad или Microsoft Word и попробуйте перетащить данные из txt1 в окно другого приложения (не перепутайте WordPad с Блокнотом (Notepad) — Блокнот не поддерживает операций перетаскивания OLE). Затем попробуйте перетащить данные из WordPad в ваше приложение. Результат показан на рис. 11.3.
Рис. 11.3. Перетаскивание данных между приложениями
Создание «пасхального яйца» Давайте спрячем в нашем приложении простейшее «пасхальное яйцо». Если вы не знаете, что этот термин означает на жаргоне программистов, позвольте мне объяснить. Многие приложения Windows обладают скрытыми возможностями для отображения справочной информации или картинки. В сообщениях обычно перечисляется состав команды, работавшей над проектом, или выводится их оцифрованная фотография. Иногда в «пасхальном яйце» прячется ролик, порочащий продукт конкурентов. Такие скрытые функции называются «пасхальными яйцами»потому, что их приходится разыскивать. Чаще всего они прячутся в диалоговом окне About и вызываются только определенной последовательностью щелчков и нажатий клавиш. Мы воспользуемся диалоговым окном About, созданным Form Wizard, и включим в него простейшее «пасхальное яйцо». Если проявить некоторую изобретательность при программировании, диалоговое окно с «пасхальным яйцом» можно будет использовать и в других приложениях. 1. Создайте новый проект типа Standard EXE. 2. Задайте свойству Caption формы Form1 значение Пасхальное яйцо. 3. Создайте меню на форме Form1. Задайте свойству Caption значение & About, а свойству Name — значение mnuAbout. 4. Щелкните правой кнопкой мыши в окне проекта и выберите из контекстного меню команду Add > Form. В открывшемся окне Form Wizard выберите значок About Dialog и нажмите кнопку Open (рис. 11.4).
Рис. 11.4. Создание формы диалогового окна About
5. Дважды щелкните на значке, расположенном в левом верхнем углу окна About, чтобы открыть окно программы. 6. В окне программы перейдите к процедуре события picIcon_MouseUp() и добавьте в нее следующий фрагмент:
Private Sub picIcon_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 And Shift = 6 Then MsgBox " Вы нашли пасхальное.яйцо! " End If
End Sub
7. Дважды щелкните на форме Form1 в окне проекта, чтобы открыть окно программы. 8. Добавьте в процедуру события mnuAbout_Click() следующий фрагмент:
Private Sub mnuAbout_Click() frmAbout.Show vbModal End Sub
9. Сохраните и запустите программу. 10. Найдите «пасхальное яйцо» — для этого следует... Нет, я не скажу, как отыскать «пасхальное яйцо» — если вы поняли код этого примера, это и так очевидно. Когда сюрприз будет найден, вы увидите нечто похожее на рис. 11.5. На самом деле наше «яйцо» получилось довольно скучным. Чтобы поразить воображение пользователя, придется создать нестандартную форму с графикой и даже звуком. Если вас интересует, как воспроизвести файл формата.wav, прочитайте урок 19, «Использование DLL и Windows API», — в нем содержится весь необходимый код. Рис. 11.5. «Пасхалъное яйцо» найдено
|