- •1)Структурные особенности Visual Basic. Подпрограммы. Пример.
- •2. Диалоговые окна MsgBox и InputBox. Примеры.
- •3. Четыре принципа объектно-ориентированного программирования. Их реализация в Visual Basic.
- •4. Классы. Интерфейс классов. Создание динамических библиотек на основе классов в Visual Basic. Регистрация библиотек.
- •5. Способы объявления объектных переменных в Visual Basic.
- •6. Раннее и позднее связывание с объектом. Примеры.
- •7. Способы объявления событий классов. Примеры.
- •8. Создание элемента управления ActiveX в Visual Basic. Отображаемые и пользовательские свойств и методы ActiveX-компонент. Передача события приложению–контейнеру. Регистрация компонент.
- •9. Пример динамического способа формирования объектов на форме vb.
- •10)Пример работы с коллекцией объектов, свойствами и методами объектов.
- •11. Работа с отладчиком Visual Basic. Окна Watch, Immediate.
- •12. Оператор On Error. Методы объектов Debug. Условная компиляция. Примеры
- •13. Свойства и методы объектов Debug, Err. Примеры.
- •Объявление переменных
- •Математические операции
- •Строковые операции
- •Оптимизация приложений
- •Оптимизация скорости работы приложения
- •Оптимизация размера приложения
- •Оптимизация размера графики приложения
- •15. Основные свойства и методы объектов Screen. Примеры
- •Свойство ActiveControl
- •16. Основные свойства и методы объектов Clipboard. Примеры.
- •17. Основные свойства и методы объектов App. Примеры
- •18.Редактор меню Menu Editor. Оконные приложения.Основные свойства объекта Menu. Примеры.
- •Отображение контекстных меню
- •Изменения кода для отображения контекстных меню
- •19.Основные объекты (FileSystemObject, File, Drive, Folder и TextStream.), их свойства и методы библиотеки Scripting.FileSystemObject
- •20. Основные свойства, методы и события объекта UserControl.
- •26. История развития объектных моделей.
- •27. Компонентные приложения. Особенности компонент.
- •28. Интеграция приложений средством Automation.
- •29. Объектная модель ms Word. Свойства и методы объекта Application модели ms Word. Пример.
- •30. Примеры процедур на определение списка всех панелей инструментов и тем главного меню ms Word.
- •32. Свойства и методы объектов Options, Dialogs, Selection и Range объектной модели ms Word.
- •33. Объекты, свойства и методы семейства CommandBars
- •34. Объекты и семейства объекта vbe
- •Объект CodeModule .Представляет программу, определенную для таких компонентов проекта как форма, класс или документ. Дополнительные сведения
- •Объект CommandBarEvents
- •Семейство CommandBars
- •Объект vbComponent
- •Семейство vbComponents
- •Объект CodePane
- •Семейство CodePanes
- •Объект Events
- •Семейство LinkedWindows
- •Объект Property
- •Семейство Properties
- •Объект Reference
- •Семейство References
- •Объект ReferencesEvents
- •Объект vbe
- •Объект vbProject
- •Семейство vbProjects
- •Объект Window
- •Семейство Windows
- •Редактор Visual Basic
- •Библиотека объектов Office 2000 и Object Browser
- •37. Объектная модель ms Excel. Свойства и методы объекта Application.
- •38. Объектная модель ms Excel. Свойства, методы, события объекта WorkBook.
- •39. Объектная модель ms Excel. Свойства, методы, события объекта WorkSheet
- •40. Методы класса WorkSheetFunction объектной модели ms Excel. Пример на вычисление выражения.
- •41. Пример использования объекта SpreadSheet в проектах vb.
- •42. Функции работы с матрицами окна vba Excel. Пример решения системы линейных уравнений.
- •43. Свойства объекта Range объектной модели ms Excel.
- •44. Методы объекта Range объектной модели ms Excel. Примеры.
- •45. Пример сортировки слов в строке с использованием объектной модели ms Excel.
- •46. Пример вычисления корня нелинейного уравнения с использованием объектной модели ms Excel.
- •47. Свойства и методы объекта Chart объектной модели ms Excel. Пример.
- •Терминальные свойства объекта Chart
- •Методы объекта Chart
- •События объекта Chart
- •Построение обработчиков событий
- •48. Пример отображения на форме vb графика функции с использованием объектной модели ms Excel. Рассмотреть способ передачи графика через диск и через буфер обмена.
- •49. Методы SolverOk и SolverAdd библиотеки Solver.Xla.
- •50. Методы SolverOptions, SolverSolve и SolverDelete, SolverSave, SolverLoad библиотеки Solver.Xla.
- •52. Пример динамического способа формирования объектов на форме vba Excel.
- •51. Пример решения системы нелинейных уравнений с использованием объектной модели ms Excel.
- •53. Объектная модель (объекты и коллекции) ms Access.
- •54. Свойства и методы объекта Application объектной модели ms Access.
- •55. Интерфейсы объектов данных и интерфейсы прикладного уровня программирования.
- •56. Объектная модель dao рабочей области ms Jet. Объекты и семейства. Пример открытия бд Access.
- •57. Объектная модель dao рабочей области odbcDirect.
- •59.Ручной и программный способ установления связи с источником данных.
- •62.ActiveX-компонент WebBrowser и объект InternetExplorer для работы в www из проектов Visual Basic.
- •86.Особенности работы с логическим инструментом. Пример отображения в окне прямоугольника заданного размера, толщины и цвета.
- •87.Работа со строками в Windows. Изменение цвета и фона строки текста.
- •89.Пример работы с базовыми шрифтами.
- •95.Пример отображения базовых геометрических фигур, использующих api-функции.
- •96.Создание и заполнение произвольных областей. Пример.
95.Пример отображения базовых геометрических фигур, использующих api-функции.
Отобразить базовые геометрические фигуры, используя API-функции Windows. PrivateSubCommand1_Click()DimOldBrushAsLong, BrushAsLong, PenAsLong,OldPenAsLong, i AsInteger, mLPAsLOGPENDimW AsPOINTAPI, lppAsPOINTAPIBrush= CreateSolidBrush(RGB(0, 255, 0))OldBrush= SelectObject(Form1.hdc, Brush)W.x=1Fori = 1 To6'Отображение фигур различными стилями пера 1…6
WithmLP.lopnStyle= i 'Задаем стиль линии.lopnWidth= W.lopnColor= &HFF
EndWith
Pen= CreatePenIndirect(mLP)OldPen= SelectObject(Form1.hdc, Pen)Ifi = 1 ThenCallRectangle(Form1.hdc,20,30,70,80)Ifi = 2 ThenCallEllipse(Form1.hdc,100,30,150,80)Ifi = 3 ThenCall_Pie(Form1.hdc,180,30,230,80,180,30,230,30)Ifi = 4 ThenCall_Chord(Form1.hdc, 260, 30, 310, 80,260,30,310,50)Ifi = 5 ThenCall_RoundRect(Form1.hdc,20,120,70,170,25,25)if i = 6 ThenCallSelectObject(Form1.hdc, OldPen)W.x= 3mLP.lopnWidth= WPen= CreatePenIndirect(mLP)
OldPen= SelectObject(Form1.hdc, Pen)CallArc(Form1.hdc,200,100,320,200,350,250, 200,400)CallMoveToEx(Form1.hdc, 400, 250, lpp)CallLineTo(Form1.hdc, 260, 150)CallLineTo(Form1.hdc, 190, 250)CallFloodFill(Form1.hdc, 250, 120, &HFF)EndIfCallSelectObject(Form1.hdc, OldPen)NextCallSelectObject(Form1.hdc, OldBrush)EndSubPrivateSubForm_Load()Caption= "Примеротображенияграфическихпримитивов"End Sub
96.Создание и заполнение произвольных областей. Пример.
Создание и заполнение произвольных областей С помощью комбинации простейших геометрических фигур-многоугольников, прямоугольников и эллипсов программа может создать сложную геометрическую фигуру, которая называется областью (регион-Region). Область-это такой же графический объект, как перо или кисть. Последовательность работы с областью заключается в следующем.
•Сначала создается область.
•Затем выбирается кисть и ею заполняется область.• И, наконец, ненужные области удаляются подобно логическим инструментам с помощью функции DeleteObject. При работе с областями используются следующие API-функции.
♦CombineRgn(ByValhDestRgnAsLong, ByValhSrcRgn1 AsLong, ByValhSrcRgn2 AsLong, ByValnCombineModeAsLong) –объединяет области hSrcRgn1, hSrcRgn2 и помещает результат в уже существующую область hDestRgn. АргументnCombineMode задает режим объединения, который может принимать одно из следующих значений :
RGN_AND –объединенная область содержит части, общие для обеих областей;
RGN_OR –объединенная область содержит обе области hSrcRgn1,hSrcRgn2;
RGN_XOR –объединенная область содержит только те части hSrcRgn1, hSrcRgn2, которые не являются общими для обеих областей;
RGN_COPY – объединенная область содержит лишь область hSrcRgn1, а область hSrcRgn2 игнорируется; RGN_DIFF -в объединенную область помещается лишь та часть hSrcRgn1, которая не принадлежит области hSrcRgn2 (RGN_DIFF= hSrcRgn1 -hSrcRgn2). Размер объединенной области, как и вообще любой области, не может превышать 64 Кбайт. Для повышения эффективности работы функции желательно, чтобыRgn1 была областью простой формы(прямоугольник или эллипс).
♦CreateEllipticRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong) – создает
Область в виде эллипса(или окружности), вписанного в прямоугольник x1,y1,x2,y2.
*CreateRectRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong) –создает прямоугольную область.
*CreateRoundRectRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong, ByValx3 AsLong, ByValy3 AsLong) –создает прямоугольную область с закругленными углами.
*CreatePolygonRgn(lpPointAsPOINTAPI,ByValnCountAsLong, ByValnPolyFillModeAsLong) –создает регион в виде многоугольника.*EqualRgn(ByValhSrcRgn1 AsLong, ByValhSrcRgn2AsLong) —проверяет эквивалентность двух областей.
FillRgn(ByValhdcAsLong, ByValhRgnAsLong, ByValhBrushAsLong) —заполняет(но не обводит) область кистью.
♦FrameRgn(ByValhdcAsLong, ByValhRgnAsLong, ByValhBrushAsLong, ByValnWidthAsLong, ByValnHeightAsLong) —обводит(не заполняет) область кистью.
nWidht, nHeigth-ширина и высота кисти. По умолчанию цвет кисти берется из BackColor.
♦InvertRgn(ByValhdcAsLong, ByValhRgnAsLong)—инвертирует цвет пиксель внутри области hRgn.
♦OffsetRgn(ByValhRgnAsLong, ByValx AsLong, ByValy AsLong) –смещает видимое изображение на x,y логических единиц по горизонтали и вертикали. Положительные значения соответствуют наращиванию координат.
♦PaintRgn(ByValhdcAsLong, ByValhRgnAsLong) –заполняет область целиком текущей кистью.
♦SetWindowRgn(ByValhWndAsLong, ByValhRgnAsLong, ByValbRedrawAsBoolean) –прикрепляет регион к окну.
97.Работа с растровыми изображениями. Курсоры.
Растровыми изображениями в Windows являются курсоры, иконки и BitMap-растры. Если они размещены в файле проекта с расширением RES, то их называют ресурсами приложения. Следует отметить, что все API-функции, начинающиеся со слов Load, обращаются к файлу ресурса или используют предопределенные инструменты, а все API-функции, начинающиеся со слов Create, создают графические образы в сегменте данных программы и тем самым ограничивают память, отводимую программе. Ресурсы же загружаются в память только при необходимости, а все остальное время находятся на диске. Их всегда необходимо удалять из памяти функцией DeleteObject.
Курсоры
Курсоры-это специальные растровые изображения, связанные с местоположением указателя мыши. Размер курсора зависит от разрешающей способности экрана и обычно составляет 32х32 пикселя. Изображение курсора хранится в виде двух масок(называемых AND и XOR), позволяющих сделать курсор«прозрачным». Курсоры обычно хранятся в файлах с расширением CUR или совместно с другими ресурсами в файле с расширением RES. Базовый курсор, который будет использоваться для окон данного класса, задается при создании класса функцией: LoadCursor(ByValhInstanceAsLong, ByVallpCursorNameAsLong) AsLong,
гдеhInstance- это экземпляр программы класса окна. При использовании базовых курсоров этот параметр должен быть равен 0.
lpCursorName-это идентификатор курсора из файла ресурса.
Обычно курсор типа IDC_WAIT (песочные часы) используется для указания на операцию, которая требует времени выполнения;
IDC_IBEAM –для операций редактирования текста; IDC_SIZEALL –при редактировании графических изображений.
Например, WC.hCursor= LoadCursor(0, IDC_NO)' илиIDC_CROSS С помощью свойства MousePointer объекта Screen можно устанавливать в рабочей области окна новый курсор.
Если возникает необходимость использовать внешний курсор, хранящийся в файле с расширением CUR, то можно воспользоваться функцией LoadCursorFromFile.
Курсоры, хранимые в ресурсах, и базовые курсоры удалять из памяти не нужно. Курсоры могут быть или одноцветными, или цветными, статическими или «живыми»(анимационными). Тип курсора, используемого в отдельной компьютерной системе, зависит от системного дисплея. Старые дисплеи типа VGA не поддерживают цветные или «живые» указатели.
98.Работа с растровыми изображениями. Иконки.
Иконки используются для отображения окна в закрытом состоянии представляют собой не большое графическое изображение. При заполнении структуры WNDCLASSEX полю hIcon присваивается иконка размером 32x32 пикселя, а полю hIconSm-иконка 16x16 пикселей. Как и курсоры, иконки содержат две маски, что позволяет регулировать их прозрачность. Они могут храниться в файлах с расширением ICO либо в файлах с расширением RES. Иконка, которая должна использоваться во всех окнах класса, загружается одной из функций: LoadIcon, ExtractIcon, LoadResPicture. Синтаксис первых двух функций следующий .LoadIcon(ByValhInstanceAsLong, ByVallpIconNameAsLong) AsLong,
ExtractIcon(ByValhInstAsLong, ByVallpszExeFileNameAsString, ByValnIconIndexAsLong) AsLong,гдеlpIconName-именованный или числовой идентификатор базовой иконки;
hInst—этот аргумент может быть только App.hInstance;
lpszExeFileName-имя файла, из которого извлекаются иконки: исполнимый файл(exe), библиотека(dll) или отдельный ico-файл;
nIconIndex—номер извлекаемой иконки, или-1 для получения числа иконок в файле.
Если иконка базовая, то первый параметр у функции LoadIcon должен быть равен нулю. В среде Windows определены следующие базовые иконки: IDI_APPLICATION=0,IDI_EXCLAMATION= 1,IDI_QUESTION = 2, IDI_ASTERISK=3, IDI_HAND=4.
Кстати, функция ExtractIcon может загружать не только иконки, но и курсоры (для Windows они равнозначны).В программе можно создать собственную иконку функцией CreateIcon, а после е использования удалить функцией DeleteObject.
Для отображения в рабочей области окна иконки или курсора используется одна из следующих функций: DrawIcon(ByValhdcAsLong, ByValxLeftAsLong, ByValyTopAsLong, ByValhIconAsLong) AsLong,DrawIconEx(ByValhdcAsLong,ByValxLeftAsLong, ByValyTopAsLong, ByValhIconAsLong, ByValcxWidthAsLong, ByValcyHeightAsLong, ByValistepIfAniCurAsLong, ByValhbrFlickerFreeDrawAsLong, ByValdiFlagsAsLong) AsLong,гдеhDC—дескриптор контекста устройства, на котором будет выведена иконка. Если вывод иконки осуществляется на форму, то свойство AutoRedraw=True, а после вывода иконки нужно перерисовать объект методом Refresh; xLeft, yTop-координаты, в которые будет выведена иконка;
hIcon-дескриптор прорисовываемой иконки; cxWidth, cyHeight-размеры прорисовываемой иконки; istepIfAniCur-этот параметр указывает на номер кадра, если Вы загрузили анимированный курсор; hbrFlickerFreeDraw-дескриптор кисти для перерисовки значка. По документации, если этот параметр не опущен, то он должен снизить мерцание при прорисовке; diFlags—флаги прорисовки, которые могут иметь следующие значения: DI_NORMAL = 3 –прорисовка иконки полностью;
DI_IMAGE = 2 –прорисовка XOR-маски(изображение на черном фоне);DI_MASK = 1 –прорисовка AND-маски(черно-белый негатив). Для выделения иконки из exe-файла используется функция: ExtractAssociatedIcon(ByValhInstAsLong, ByVallpIconPathAsString, lpiIconAsLong) AsLong,гдеlpIconPath—путь к exe-файлу с иконками; lpiIcon—номер иконки в файле.
99.Работа с растровыми изображениями. Bitmap-растры.
В среде Windows существует специальный тип ресурсов- растровые изображения(BitMap-растры). Они используются в двух случаях:
•для создания собственных кистей на основе BitMap-растров и заполненияими фона фигур;
•для отображения графических изображений, которые проще создать в графическом редакторе Imagedit.exe, загрузить их в файл ресурса, а затем использовать в проекте, чем рисовать API -функциями. Для создания кисти на основе BitMap-растра существуют два способа. Первый способ основан на получении дескриптора BitMap-растра, загруженного в файл ресурса, использует одну из функций:
LoadResPicture(ByVallpBitmapNameAsLong,vbResBitmap) AsLongилиLoadBitmap(ByValhInstanceAsLong, ByVallpBitmapNameAsLong) AsLong,где lpBitmapName—имя BitMap-растра в файле ресурса, а первый параметр в функции LoadBitmap тот же, что и функции LoadIcon.
Второй способ основан на получении дескриптора, создаваемого в программе BitMap-растра, и использует функцию:CreateBitmap(ByValnWidthAsLong, ByValnHeightAsLong, ByValnPlanesAsLong, ByValnBitCountAsLong,lpBitsAsAny) AsLong
Параметрами этой функции являются ширина и высота BitMap-растра(карты бит), число цветовых плоскостей в карте бит, число бит цвета на элемент отображения дисплея и указатель на массив двоичных чисел BitMap-растра. Дескриптор кисти, создаваемый на основе BitMap-растра (дескриптор которого возвращается одной из трех приведенных выше функций), получают функцией:CreatePatternBrush(ByValhBitmapAsLong)AsLong Далее дескриптор созданной кисти необходимо установить в контекст устройства функцией:SelectObject(ByValhdcAsLong, ByValhObjectAsLong) AsLong После того, как растровое изображение и кисть больше не будут использоваться в программе, их необходимо удалить из памяти функцией
DeleteObject(ByValhObjectAsLong) AsLong Удалять созданные объекты необходимо обязательно, так как память под BitMap-растр выделяется одна и таже вместе с программой, и наложение AND иXOR-масок предыдущего и вновь создаваемого изображений может привести к зависанию компьютера, а заливка фигур будет практически не предсказуема.
С помощью функции StretchBlt изображение можно не только сжимать, растягивать, но даже выворачивать на изнанку, задавая параметры с разными знаками. Чтобы избежать потери растрового изображения при уменьшении размера, рекомендуется использовать функцию SetStretchBltMode(ByValhdcAsLong, ByValnStretchModeAsLong) AsLong, которая устанавливает один из режимов коррекции в nStretchMode:
•WHITEONBLACK=1-cохранить белые пиксели засчет черных;
•BLACKONWHITE=2-cохранить черные пиксели за счет белых;
•COLORONCOLOR=3 –используется для цветных графических изображений. Основное различие между функциями BitBlt, StretchBlt и методом PaintPicture в Visual Basic заключается в том, что метод можно применять только к определенному объекту(Picture, форме, принтеру), а с помощью функций BitBlt и StretchBlt можно выполнять копирование пикселей изображения в пределах рабочего стола. Их можно использовать для создания разнообразных приложений, например, программ копирования экрана, чего не позволяет метод PaintPicture.
Второй способ анимации основан на формировании изображения(образа) в окне на основе Bitmap-растра. Для этого сначала в памяти создается временный контекст функцией CreateCompatibleDc. Далее в него загружается Bitmap-растр из файла ресурса, используя функции LoadBitmapиSelectObject. Затем он копируется из временного контекста в контекст устройства экрана функцией BitBlt или StretchBlt. При этом если Вы выбрали черный цвет фона окна приемника(он имеет нулевую цветовую палитру), то это позволит Вам использовать режим vbSrcInvert в функции BitBlt или StretchBlt при наложении образа из памяти(Scr-источник) на экран(Dest-приемник) по логическому выражению ScrXorDest. Если цвет фона под образом отличен от черного, то следует скопировать его для последующего затирания образа в окне приемника, чтобы
Происходило движение. При этом напомню, что режим vbSrcAnd позволяет копировать из источника все биты, кроме белых, режим vbSrcPaint-копировать только белые биты, а режим vbSrcCopy-полностью копирует биты из источника в приемник.Осуществить перемещение графических образов можно не только из файла ресурса, но из файлов, расположенных на диске. Для этого вместо функции LoadBitmap следует воспользоваться функцией LoadPicture("Имя bmp-файла") объекта stdole.
В третьем способе анимации также, как и при использовании первого способа, графический образ создается в окне API-функциями ядра Windows, однако затем он копируется в память, откуда проецируется в окно через промежуток времени, создавая эффект движения. Чтобы поместить изображение в память, необходимо сначала создать временный контекст функцией CreateCompatibleDC и пустой BitMap-растр, совместимый с экранным контекстом, функцией CreateCompatibleBitMap(как это было показано в
Далее функцией SelectObject пустой BitMap-растр устанавливается во временном контексте, а затем в него копируется графический образ с экрана функцией BitBlt или StretchBlt. Далее происходит циклическое отображение образа из временного контекста на экране и его затирания.
Обращаю Ваше внимание, что функции mciSendString, mciExecute могут озвучивать mp3, midi, и wav-файлы, а функция sndPlaySound-лишь wav-файлы.
100.Метафайлы.
Метафайл-это закодированная последовательность вызовов API-функций. С помощью метафайла программа запоминает в памяти или в дисковом файле те действия, которые необходимо совершить для прорисовки изображения. Однажды созданный метафайл можно воспроизводить сколько угодно раз. Для создания, сохранения и использования метафайла применяются следующие функции.
1. Функция CreateMetaFile(ByVallpStringAsString) As
lpString="", то метафайл создается в оперативной памяти. После обращения к этой функции программа может работать с метафайлом как с контекстом графического устройства.
2.Функция GetMetaFile(ByVallpFileNameAsString) AsLong-открывает уже существующий метафайл и возвращает на него ссылку, если операция прошла успешно, иначе возвращает ноль.
3.Функция PlayMetaFile(ByValhdcAsLong, ByValhMFAsLong) AsLong-читает содержимое уже открытого метафайла и рисует из него изображения на контексте hDc.
5. Функция DeleteMetaFile(ByValhMFAsLong) AsLong-освобождает дескриптор метафайла. Сам метафайл при этом не разрушается и может быть вновь открыт функцией GetMetaFile. При воспроизведении метафайла записанный в него алгоритм реализуется с теми параметрами контекста устройства отображения, которые этот контекст имеет в данный момент, так как при создании метафайла ему не передаются умалчиваемые значения контекста. В связи с этим к нему нельзя применять функции, использующие информацию о параметрах контекста, такие какFrameRgn, CreateCompatibleDC, DrawIcon, FillRgn, DeleteDcи другие. При этом функция SelectObject возвращает ссылку на новый инструмент, а не на предыдущий, который автоматически уничтожается после завершения прорисовки изображения.