Мир программирования на Visual BASIC и HTML
Информация
  Архив рассылки
  Рассылка

Исходники
  Secret CODE
  Tic Tac Toe

Спонсоры
  Городской кот
  Subscribe.Ru
  Russian Surf

Ссылки
  VB Streets
  Visual BASIC
  VB: Step by Step
  SnoozeX Design
  СообЧа
  СообЧа-VB

VB Форумы
WEB:
  VBS Форум
  Ru.Visual.Basic
Mail:
  VBStreets
  СообЧа: VB
  подписка - пустое   письмо в VB группу

Доска почета
  Sergey VIMBERG
  Олег
  Oleg Palayda
  BSP
  Евгений
  Николай
  hackcode
  Дмитрий Данелия
  Виталий Иванов

Вопросы
  Автору
  По VB
  По HTML

Кнопки

Рассылка 'Мир программирования на Visual BASIC и HTML.'

мы в режиме:

SUPERTOP

SnoozeX Design
Несколько слов от автора: Приветствую! Вот сижу, отмечаю свой день рождения. Стараюсь, как быстрее накатать вам выпуск. Ну вот, ловите, что сумел, накатал.
Ваши пожелания:


E-Mail для ответа:   

РАССЫЛКА: Открылся сайт рассылки по адресу http://soobcha-vb.narod.ru/alex/ На сайте вы найдете весь архив рассылки, проекты и многое другое.
ПРИМЕЧАНИЕ: Выпуски данной рассылки начиная с первого вы сможете прочитать на http://subscribe.ru/archive/comp.design.snoozex/    @LEXis

26.05.2001 Выпуск N25 Обзор ведет @LEXis

 Сегодня в выпуске:

# E-Mail группа "СообЧа-Visual BASIC":
О группе
Создание ярлыка для программы
# Практикум на примерах:
Windows API (Часть 3 - Использование)
# Практикум на примерах:
Выравнивание меню по правому краю
# В разделе "вопросы/ответы":
Ответы на вопросы читателей
# Рубрика "Объявления"


 E-Mail группа "СообЧа-Visual BASIC"
О группе

Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic. Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается рядовой чайник-программист? Ну, пишет там всякие приколы на VB... Ну, ма-а-ленькую полезную программку наваляет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;) Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже намного больше. Есть сборник оригинальных идей, выдвинутых чле! нами нашей! группы, которые мы постараемся реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии, форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он высылает сделанный модуль в группу, и остальные просто присоединяют его к базовому проекту. Вам совсем не обязательно четко представлять, как это сделать. Достаточно просто начать и столкнуться с какой-нибудь проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;) Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в проблеме. Таким образом, все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.
Подписаться в группу (пустое письмо)
Создание ярлыка для программы

@LEXis Май 2001

Public Declare Function fCreateShellLink Lib "STKIT432.DLL" _
   (ByVal lpstrFolderName As String, _
    ByVal lpstrLinkName As String, _
    ByVal lpstrLinkPath As String, _
    ByVal lpstrLinkArgs As String) As Long


fCreateShellLink "C:\Windows\Desktop", _
   "NotePad", _
   "C:\Windows\Notepad.exe", vbNullString

 Практикум на примерах
Windows API (Часть 3 - Использование)

Использование функций API в Visual Basic

Функции API,вызываемые в Visual Basic должны быть предварительно объявлены. При объявлении указывается имя DLL и функции,а также информация о количестве и типе аргументов.

Объявление функций API и DLL

Процедуры DLL объявляются командой Declare в секции General Declarations модуля формы или стандартного модуля:
Declare Function имя Lib "библиотека" [Alias "псевдоним"] [([[ByVal ] _
переменная [As тип] [,ByVal,] переменная [As тип]]...])] As тип

Процедуры DLL,находящиеся в стандартных модулях,по умолчанию являются открытыми и могут вызываться из любой точки приложения.Процедуры,объявленные в модуле формы,являются закрытыми и перед их объявлением должно стоять ключевое слово Private.
Примечание.
Начиная с версии Visual Basic 5,в именах процедур учитывается регистр символов.

Библиотеки

Секция Lib сообщает,где следует искать файл DLL,содержащий функцию.При ссылке на основные библиотеки Windows(user32.dll,kernel32.dll,gdi.dll) расширение включать не обязательно.
Если путь к файлу не указан,то начинается просмотр каталогов в следующей последовательности

  1. Каталог,содержащий EXE-файл программы
  2. Текущий каталог
  3. Системный каталог Windows
  4. Каталог Windows
  5. Переменная окружения Path

Стандартные библиотеки DLL
Библиотека
Описание
advapi.dllЗащита NT,реестр и другие продвинутые сервисы.
comdlg.dllСтандартные диалоговые окна.
gdi.dllИнтерфейс графических устройств.
kernel32.dllПамять,диски,процессы,ресурсы.
mpr.dllСети.
netapi32.dllБиблиотека сетевого API.
shell32.dllОболочка Windows,drag-and-drop,выборка значков.
user32.dllПользовательский интерфейс-окна,меню,строки,сообщения.
version.dllКонтроль версий.
winmm.dllМультимедиа,звук,джойстики,таймеры.
winspoll.dllДиспетчер печати.


Псевдонимы

Атрибут Alias позволяет присвоить DLL-функции новое имя в Visual Basic. Например,в VB не разрешается начинать имена функций со знака подчеркивания(_lopen,_lread и другие). Во избежание этих проблем с именами функций,написанных на Си,используется псевдоним(например,lopen).

Передача аргументов

Большинство процедур DLL задокументировано с использованием нотации языка программирования C и C++.Для успешного преобразования функции API в команду Declare необходимо разбираться в механизме передачи аргументов.Обычно аргументы передаются по значению.Ниже перечислены типы аргументов C и их эквиваленты в Visual Basic

Типы данных в C и Visual Basic
Windows API
Visual Basic
charByVal Byte
handleByVal Long
INTByVal Long
UINTByVal Long
BoolByVal Long
WORDByVal Integer
DWORDByVal Long
WPARAMByVal Long
LPARAM,LRESULTByVal Long
COLORREFByVal Long
ATOMByVal Integer
ByteByVal Byte


Передача аргументов по значению

При передаче аргумента по значению передается не сама переменная,а ее временная копия.Если процедура изменяет ее значение,такие изменения будут относиться к копии,но не к самой переменной.При передаче по значению используется ключевое слово ByVal

Передача аргументов по ссылке

При передаче аргумента по ссылке процедура получает доступ к той области памяти,где хранится сама переменная.В результате вызываемая процедура может изменить значение этой переменной.Если аргумент передается по ссылке,то используется ключевое слово ByRef.


 Поленые коды на Visual BASIC
Выравнивание меню по правому краю

Добавьте на форму любое меню, состоящее из скольки угодно пунктов, а также одну кнопку Command1. Затем внесите в модуль кода формы следующее:

'Необходимые нам API функции
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo _
As MENUITEMINFO) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, _
lpcMenuItemInfo As MENUITEMINFO) As Long

'Константы
Const MIIM_TYPE = &H10
Const MFT_RIGHTJUSTIFY = &H4000
Const MFT_STRING = &H0&

'Тип MENUITEMINFO
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

'При нажатии на кнопку меню перескочит из левого края в правый
Private Sub Command1_Click()
Dim MnuInfo As MENUITEMINFO
Dim mnuH As Long, MyTemp As Long
mnuH = GetMenu(Me.hwnd)
MnuInfo.cbSize = Len(MnuInfo)
MnuInfo.fMask = MIIM_TYPE
'Если вы хотите выравнять только часть пунктов меню, тогда замените в следующей
'строке, а также в строке над End Sub число 0 на число пунктов, которое вы хотите
'оставить слева
MyTemp = GetMenuItemInfo(mnuH, 0, True, MnuInfo)
MnuInfo.fType = MFT_RIGHTJUSTIFY Or MFT_STRING
'Вам также надо заменить "MenuCaption" на имя пункта, которое будет крайним слева
'в новой расстановке
MnuInfo.cch = Len("MenuCaption")
MnuInfo.dwTypeData = "MenuCaption"
MnuInfo.cbSize = Len(MnuInfo)
MyTemp = SetMenuItemInfo(mnuH, 0, True, MnuInfo)
MyTemp = DrawMenuBar(Me.hwnd)
End Sub
 Вопросы / Ответы
Отправитель вопроса @LEXis
Приветствие!
Не подскажите, как из VB отключить клавиатуру?
Заранее спасибо.

 Объявления
Требуются люди
Хочу напомнить, что еще пусты многие вакансии рассылки:
- Рубрика "Рецензия книг"
- Рубрика "Практикум на примерах"
Также можно просто присылать коды.
Проекты группы СообЧа-VB
Вот проекты которые на данный момент в рабочем состоячнии:
- Сообчайлер: почтовый клиент
- Крестики - Нолики: игра :)
- Secret CODE: шифратор
- Inet TIMER: блокиратор интернета

Код моей кнопки:

<!-- SnoozeX Design "PLAY" -->
<a href="http://snoozex.boom.ru" TARGET="_blank"><BR><IMG SRC="http://snoozex.boom.ru/new.gif" WIDTH=88 HEIGHT=31 BORDER=1 ALT="SnoozeX Design"></a>
<!-- SnoozeX Design "END" -->

Выпуск подготовили:                    
@LEXis
Виталий Иванов
@LEXis ICQ uin : 14912636
Подписаться на рассылку Кувалина Алексея
Мир программирования на Visual BASIC и HTML
© 2000 - 2001 @LEXis & Design by SnoozeX Design
Рассылка является составной частью проекта "СообЧа - СООБщество ЧАйников"
Сайт СообЧа: http://www.soobcha.ru/
Сайт группы по VB: http://soobcha-vb.narod.ru/
Сайт рассылки: http://soobcha-vb.narod.ru/alex/
Подписаться на сообщество
© 2000 - 2001 СообЧа (СООБщество ЧАйников)
Спасибо за внимание. Ваш @LEXis

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Relayed by Corbina
Рейтингуется SpyLog
Хостинг от uCoz