Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 79.


VBNet VBMania
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.
Новости сайта IgorykSoft и советы по программированию
Visual Basic.NET Уроки.

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       3 августа 2001 года вышел первый выпуск этой рассылки! Поздравляю всех с юбилеем!
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти
    здесь.

    наверх


    Получить время двойного клика

    Этот пример покажет время двойного клика в миллисекундах: 1000 milliseconds=1 second.

    Значение S лежит в ключе реестра: [HKEY_CURRENT_USER\Control Panel\Mouse] - "DoubleClickSpeed"

    Private Declare Function GetDoubleClickTime Lib "user32" () As Long
    Private Sub Form_Load()
    S = GetDoubleClickTime
    MsgBox S
    End Sub

    наверх


    Скрыть/показать курсор мыши

    'Добавьте 1 CommandButton на форму. Вызов функции как ShowCursor& 0 - скроет курсор, вызов как ShowCursor& 1 - покажет курсор. Данная API-функция не всегда срабатывает. Я не знаю, почему. Если у вас есть объяснение,
    напишите.

    Private Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long)
    Private Sub Command1_Click()
    ShowCursor& 0 'Скрыть курсор
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ShowCursor& 1 'Показать курсор
    End Sub

    наверх


    Курсор: Перемещение, центрирование, имитация нажатия

    В данном примеры вы можете: CenterMouseOn - центрировать курсор мыши на каком-либо элементе, MouseMove - передвигать мышь в определенную точку экрана, MouseFullClick - имитировать нажатие клавиш мыши.

    Private Const MOUSEEVENTF_ABSOLUTE = &H8000
    Private Const MOUSEEVENTF_LEFTDOWN = &H2
    Private Const MOUSEEVENTF_LEFTUP = &H4
    Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
    Private Const MOUSEEVENTF_MIDDLEUP = &H40
    Private Const MOUSEEVENTF_MOVE = &H1
    Private Const MOUSEEVENTF_RIGHTDOWN = &H8
    Private Const MOUSEEVENTF_RIGHTUP = &H10

    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)

    Private Const SM_CXSCREEN = 0
    Private Const SM_CYSCREEN = 1
    Private Const TWIPS_PER_INCH = 1440
    Private Const POINTS_PER_INCH = 72

    Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type

    Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

    Private Const MOUSE_MICKEYS = 65535

    Public Enum enReportStyle
    rsPixels
    rsTwips
    rsInches
    rsPoints
    End Enum

    Public Enum enButtonToClick
    btcLeft
    btcRight
    btcMiddle
    End Enum

    ' Returns the screen size in pixels or, optionally, in others scalemode styles
    Public Sub GetScreenRes(ByRef X As Long, ByRef Y As Long, Optional ByVal ReportStyle As enReportStyle)
    X = GetSystemMetrics(SM_CXSCREEN)
    Y = GetSystemMetrics(SM_CYSCREEN)
    If Not IsMissing(ReportStyle) Then
    If ReportStyle <> rsPixels Then
    X = X * Screen.TwipsPerPixelX
    Y = Y * Screen.TwipsPerPixelY
    If ReportStyle = rsInches Or ReportStyle = rsPoints Then
    X = X \ TWIPS_PER_INCH
    Y = Y \ TWIPS_PER_INCH
    If ReportStyle = rsPoints Then
    X = X * POINTS_PER_INCH
    Y = Y * POINTS_PER_INCH
    End If
    End If
    End If
    End If
    End Sub

    ' Convert's the mouses coordinate system to a pixel position.
    Public Function MickeyXToPixel(ByVal mouseX As Long) As Long
    Dim X As Long
    Dim Y As Long
    Dim tX As Single
    Dim tmouseX As Single
    Dim tMickeys As Single
    GetScreenRes X, Y
    tX = X
    tMickeys = MOUSE_MICKEYS
    tmouseX = mouseX
    MickeyXToPixel = CLng(tmouseX / (tMickeys / tX))
    End Function

    ' Converts mouse Y coordinates to pixels
    Public Function MickeyYToPixel(ByVal mouseY As Long) As Long
    Dim X As Long
    Dim Y As Long
    Dim tY As Single
    Dim tmouseY As Single
    Dim tMickeys As Single
    GetScreenRes X, Y
    tY = Y
    tMickeys = MOUSE_MICKEYS
    tmouseY = mouseY
    MickeyYToPixel = CLng(tmouseY / (tMickeys / tY))
    End Function

    ' Converts pixel X coordinates to mickeys
    Public Function PixelXToMickey(ByVal pixX As Long) As Long
    Dim X As Long
    Dim Y As Long
    Dim tX As Single
    Dim tpixX As Single
    Dim tMickeys As Single
    GetScreenRes X, Y
    tMickeys = MOUSE_MICKEYS
    tX = X
    tpixX = pixX
    PixelXToMickey = CLng((tMickeys / tX) * tpixX)
    End Function

    ' Converts pixel Y coordinates to mickeys
    Public Function PixelYToMickey(ByVal pixY As Long) As Long
    Dim X As Long
    Dim Y As Long
    Dim tY As Single
    Dim tpixY As Single
    Dim tMickeys As Single
    GetScreenRes X, Y
    tMickeys = MOUSE_MICKEYS
    tY = Y
    tpixY = pixY
    PixelYToMickey = CLng((tMickeys / tY) * tpixY)
    End Function

    Public Function CenterMouseOn(ByVal hwnd As Long) As Boolean
    Dim X As Long
    Dim Y As Long
    Dim maxX As Long
    Dim maxY As Long
    Dim crect As RECT
    Dim rc As Long
    GetScreenRes maxX, maxY
    rc = GetWindowRect(hwnd, crect)
    If rc Then
    X = crect.Left + ((crect.Right - crect.Left) / 2)
    Y = crect.Top + ((crect.Bottom - crect.Top) / 2)
    If (X >= 0 And X <= maxX) And (Y >= 0 And Y <= maxY) Then
    MouseMove X, Y
    CenterMouseOn = True
    Else
    CenterMouseOn = False
    End If
    Else
    CenterMouseOn = False
    End If
    End Function

    Public Function MouseFullClick(ByVal MBClick As enButtonToClick) As Boolean
    Dim cbuttons As Long
    Dim dwExtraInfo As Long
    Dim mevent As Long
    Select Case MBClick
    Case btcLeft
    mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP
    Case btcRight
    mevent = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP
    Case btcMiddle
    mevent = MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP
    Case Else
    MouseFullClick = False
    Exit Function
    End Select
    mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo
    MouseFullClick = True
    End Function

    Public Sub MouseMove(ByRef xPixel As Long, ByRef yPixel As Long)
    Dim cbuttons As Long
    Dim dwExtraInfo As Long
    mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, PixelXToMickey(xPixel), PixelYToMickey(yPixel), cbuttons, dwExtraInfo
    End Sub

    Private Sub Command1_Click()
    Call CenterMouseOn(Command1.hwnd)
    End Sub

    наверх


    "Заморозить"/"Разморозить" курсор мыши

    Расположите на форме 2 элемента CommandButton. При нажатии на первую кнопку, курсор мыши заморозится. При нажатии на вторую конпку - курсор снова будет активным. Используйте клавишу TAB для перехода с фокуса первой кнопки на фокус второй.

    Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
    Private Sub Command1_Click()
    ClipCursor Null
    End Sub
    Private Sub Command2_Click()
    ClipCursor ByVal 0&
    End Sub

    наверх


    Определить над каким элементом находится курсор мыши

    Добавьте на форму элемент ListBox.

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Const LB_ITEMFROMPOINT = &H1A9
    Private Sub Form_Load()
    List1.AddItem "111"
    List1.AddItem "222"
    List1.AddItem "333"
    List1.AddItem "444"
    End Sub
    Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim lXPoint As Long
    Dim lYPoint As Long
    Dim lIndex As Long
    If Button = 0 Then
    lXPoint = CLng(X / Screen.TwipsPerPixelX)
    lYPoint = CLng(Y / Screen.TwipsPerPixelY)
    With List1
    lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal _
    ((lYPoint * 65536) + lXPoint))
    If (lIndex >= 0) And (lIndex <= .ListCount) Then
    ' .List(lIndex) contains the name of the item under the mouse cursor.
    ' if you want to display the item in textbox, simply write:
    ' Text1.Text =.List(lIndex)
    .ToolTipText = .List(lIndex)
    Else
    .ToolTipText = ""
    End If
    End With
    End If
    End Sub

    наверх


    Ограничить передвижение мыши

    Данный пример покажет, как можно ограничить передвижение мыши в пределах запущенной формы.
    Расположите на форме 2 элемента CommandButton.

    Private Declare Sub ClipCursor Lib "user32" (lpRect As Any)
    Private Declare Sub GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT)
    Private Declare Sub ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINT)
    Private Declare Sub OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long)
    Private Type RECT
    left As Integer
    top As Integer
    right As Integer
    bottom As Integer
    End Type
    Private Type POINT
    x As Long
    y As Long
    End Type
    Private Sub Form_Load()
    Command1.Caption = "Ограничить передв."
    Command2.Caption = "Снять ограничение"
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    ClipCursor ByVal 0&
    End Sub
    Private Sub Command1_Click()
    Dim client As RECT
    Dim upperleft As POINT
    GetClientRect Me.hWnd, client
    upperleft.x = client.left
    upperleft.y = client.top
    ClientToScreen Me.hWnd, upperleft
    OffsetRect client, upperleft.x, upperleft.y
    ClipCursor client
    End Sub
    Private Sub Command2_Click()
    ClipCursor ByVal 0&
    End Sub

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.

    наверх


    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса:
    Alex

    Ответ ожидается по этому адресу

       При яапуске Аутлука надо яаполнить URL, subject, и!! приатачить файл. По отдельности как это сделать понятно. Напрмер .sendfile - но как добавить url & subject? Или mailto: , но как присоединить файл? В баяе есть яакаячик с емайлом и ему надо отсылать формируемый в ворде файл. Помогите кто янает, pls


    Автор вопроса: AFB

    Ответ ожидается по этому адресу

       Как остановить удаление файлов если их нет в папке?


    Автор вопроса: XAlex

    Ответ ожидается по этому адресу

       Как добавить информацию ия reg файла в реестр бея всяких вопросов и уведомлений


    Автор вопроса: Dima

    Ответ ожидается по этому адресу

       Как узнать название монитора и видеокарты программно в VB?


    Автор вопроса: sv

    Ответ ожидается по этому адресу

       Как сделать форму прозрачной?




    Ответы:


    Вопрос:

       У меня есть нетипияированный файл (тот который открывается RANDOM) Как уянать сколько в файле яаписей ?

    Ответ:

    Автор ответа: Andrew Isakov

    Ну… Узнаешь его размер, делаешь поправку на размер заголовка и остаток делишь на размер записи… Почитай про FileSystemObject. Правда, он только в VB6 присутствует…


    Вопрос:

       Где (в Москве или в инете) можно приобрести лицензионный VB и MSDN?

    Ответ:

    Автор ответа: Andrew Isakov

    IMHO, вопрос к Московскому представительству Мелкософта…


    Вопрос:

       Кто знает как пользоваться компонентом Direct Text-to-Speech...пожалуйста напишите...

    Ответ:

    Автор ответа: Andrew Isakov

    Как пользоваться – не знаю, но знаю, что русского его пока нет, да и, возможно, не предвидится… ;-( Но че-то не очень замутненное я писал года полтора назад – использовал латиницу, подбирал сочетания английских фонем, чтобы звучало по-русски. Акцент, правда, остался… ;-)


    Вопрос:

       Как программно открыть файл, что б как при двойном щелчке грыяуном открывался?

    Ответ:

    Автор ответа: ZemD

    Очень просто используй ShellExecute(

         HWND hwnd, // handle to parent window
         LPCTSTR lpOperation, // pointer to string that specifies operation to perform
         LPCTSTR lpFile, // pointer to filename or folder name string
         LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
         LPCTSTR lpDirectory, // pointer to string that specifies default directory
         INT nShowCmd // whether file is shown when opened
        );
            или если надо запустить ехе'шник
    UINT WinExec(

         LPCSTR lpCmdLine, // address of command line
         UINT uCmdShow // window style for new application
        );

        Надеюсь всё очень понятно ;) а вобще лучше читай мелкософт сдк


    Вопрос:

       Как программно съимитировать нажатие кнопки мыши?

    Ответ:

    Автор ответа: Andrew Isakov

    Нажатие кнопки мыши – это событие… Просто вызывай обработчик нажатия кнопки мыши нужного объекта (контрола) – и все…


    Вопрос:

       помогите составить оптимальный алгоритм создания дерева (treeviewer)из таблицы, в которой два основных поля - ссылка на верхний и нижний узел ( rec_up,rec_down )

    Ответ:

    Автор ответа: Andrew Isakov

    Оптимальной будет рекурсия. При каждом вызове самой себя контекст прежнего узла сохраняется… При выходе (в саму себя, разумеется) – восстанавливается…


    Вопрос:

       Народ подскажите плиз как считать/записать в файл бинарный код и где мне его в VB потом хранить ведь в переменные типа iteger и long нечего не поместиться .

    Ответ:

    Автор ответа: Andrew Isakov

    Попробуй string – там аж 32К умещается. А доступ – через указатель…


    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел