|
|
Несколько слов от автора:
Привет! Вот нашел время натыкать новый выпуск. Может, кто согласится, со мной вести рассылку и работать над проектами? А то, у меня времени все меньше и меньше :(. Поздравляю всех с приздником 9 Мая! Ну читайте выпуск.
РАССЫЛКА: Открылся сайт рассылки по адресу http://soobcha-vb.narod.ru/alex/ На сайте вы найдете весь архив рассылки, проекты и многое другое.
ПРИМЕЧАНИЕ: Выпуски данной рассылки начиная с первого вы сможете прочитать на http://subscribe.ru/archive/comp.design.snoozex/
@LEXis
|
|
9.05.2001 Выпуск N23 Обзор ведет @LEXis
# E-Mail группа "СообЧа-Visual BASIC":
| О группе |
| Модуль перекодировки |
# Поленые коды на Visual BASIC:
| Удаление непустого каталога |
# Практикум на примерах:
| Windows API (Часть 2 - Введение) |
# В разделе "вопросы/ответы":
| Ответы на вопросы читателей |
# Рубрика "Объявления"
E-Mail группа "СообЧа-Visual BASIC"
|
| О группе |
Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic. Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается рядовой чайник-программист? Ну, пишет там всякие приколы на VB... Ну, ма-а-ленькую полезную программку наваляет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;) Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже намного больше. Есть сборник оригинальных идей, выдвинутых членами нашей группы, которые мы постараемся реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии, форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он высылает сделанный модуль в группу, и остальные просто присоединяют его к базовому проекту. Вам совсем не обязательно четко представлять, как это сделать. Достаточно просто начать и столкнуться с какой-нибудь проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;) Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в проблеме. Таким образом, все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.
Подписаться в группу (пустое письмо)
| Модуль перекодировки |
Виталий Иванов Апрель 2001
Преобразование строки из одной кодовой страницы в другую
'----
'Это в модуль:
Public Const WC_COMPOSITECHECK = &H200
Public Const WC_DEFAULTCHAR = &H40
Public Const WC_DISCARDNS = &H10
Public Const WC_SEPCHARS = &H20
Public Const CP_ACP = 0
Public Const CP_OEMCP = 1
Public Const CP_MACCP = 2
Public Const CP_THREAD_ACP = 3
Public Const CP_SYMBOL = 42
Public Const CP_UTF7 = 65000
Public Const CP_UTF8 = 65001
Public Const MB_PRECOMPOSED = &H1
Public Const MB_COMPOSITE = &H2
Public Const MB_USEGLYPHCHARS = &H4
Public Const MB_ERR_INVALID_CHARS=&H8
Public Declare Function WideCharToMultiByte Lib "kernel32" _
(ByVal CodePage As Long, ByVal dwFlags As Long, _
ByVal lpWideCharStr As String, ByVal cchWideChar As Long, _
ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, _
ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Public Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, _
ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, _
ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
'-----
Описание вызовов и параметров
WideCharToMultiByte преобразует Unicode строку в символьную строку.
Новая символьная строка не обязательно из много-символьного набора.
(перевел как смог...)
ПараметрОписание
CodePage Кодовая страница, используемая для преобразования.
Этот параметр может иметь значение любой кодовой страницы,
которая установленна или доступна в системе.
Вы так же можете использовать одно из следующих значений:
CP_ACP - ANSI code page
CP_MACCP - Macintosh code page
CP_OEMCP - OEM code page
CP_SYMBOL - Symbol code page (42)
CP_THREAD_ACP
CP_UTF7
CP_UTF8
dwFlags 'Битовые флаги, определяющие обработку символов,
которые не могут быть преобразованы. Вызов
работает наиболее быстро если ни один из флагов не используется.
WC_NO_BEST_FIT_CHARS
WC_COMPOSITECHECK
WC_DISCARDNS
WC_SEPCHARS
WC_DEFAULTCHAR
lpWideCharStrUnicode строка для преобразования
cchWideChar Длина Unicode строки в символах, если -1 то
предполагается что строка NULL-terminated
и длина расчитывается автоматически
lpMultiByteStr Буфер в который помещается преобразованная строка.
cchMultiByte Длина буфера в байтах
lpDefaultChar Символ который будет использоватся в том случает
если Unicode символ не может быть преобразован
в выьранной кодовой странице.
lpUsedDefaultChar Флаг, показывающий был ли использован DefaultChar в преобразовании.
Return Value В случае успешного завершения - это длинна преобразованной
строки, в обратном случае 0.
MultiByteToWideChar 'преобразует символьную строку в Unicode.
CodePage см. Описание
WideCharToMultiByte dwFlags Всегда будем использовать значение MB_PRECOMPOSED
lpMultiByteStr Символьная строка для преобразования
cchMultiByteДлина символьной строки в байтах, если строка NULL-terminated то для автоматического расчета длины строки
используйте -1.
lpWideCharStrБуфер в который помещается Unicode строка.
cchWideChar Длина буфера в Unicode символах Return Value: В
случае успешного завершения - это кличество Unicode символов
записанных в буфер lpWideCharStr, в обратном случае 0.
ПРИМЕР
Функция ConvertString преобразует строку strStc из кодовой страницы nFromCP,
в кодовую страницу nToCP, и возвращает преобразованную строку.
Public Function ConvertString(ByVal strSrc As String, _
ByVal nFromCP As Long, _
ByVal nToCP As Long) As String
Dim nLen As Long
Dim strDst As String
Dim strRet As String
Dim nRet As Long
nLen = Len(strSrc)
strDst = String(nLen * 2, Chr(0))
strRet = String(nLen * 2, Chr(0))
nRet = MultiByteToWideChar(nFromCP, MB_PRECOMPOSED, strSrc, nLen, strDst, nLen)
nRet = WideCharToMultiByte(nToCP, 0, strDst, nRet, strRet, nLen * 2, ByVal 0, 0)
ConvertString = Left(strRet, nRet)
End Function
И проблем никаких! Имеем, допустим, TextBox. В нем текст в кодировке
KOI, надо получить в Windows. Запускаешь:
TextBox = StringConvert(TextBox, 20866, 1251)
И все! 400Кб за одну секунду!
'Значения для часто используемых кодовых страниц
Central European (DOS)852
Central European Alphabet (Windows)1250
Central European Alphabet (ISO)28592
Cyrillic Alphabet (DOS)866
Cyrillic Alphabet (Windows)1251
Cyrillic Alphabet (ISO)28595
Cyrillic Alphabet (KOI8-R)20866
Ukrainian Alphabet (KOI8-RU)21866
Latin 3 Alphabet (ISO)28593
Western Alphabet1252
Baltic Alphabet (Windows)1257
Baltic Alphabet (ISO)28594
Greek Alphabet (Windows)1253
Greek Alphabet (ISO)28597
Turkish Alphabet1254
Arabic Alphabet (Windows)1256
Arabic Alphabet (ISO)28596
Hebrew (DOS)862
Hebrew Alphabet (Windows)1255
Полезные коды на Visual BASIC
|
| Удаление непустого каталога |
'----
Option Explicit
Private Sub Command1_Click()
On Error GoTo erhand
Dim delFSO As Object
Set delFSO = CreateObject("Scripting.FileSystemObject")
delFSO.DeleteFolder Text1.Text, True
Exit Sub
erhand:
If Err.Number = 76 Then
MsgBox ("Путь указан неверно"), vbCritical
Text1.SetFocus
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text = Empty Then
MsgBox ("Введите путь"), vbCritical
Cancel = True
Exit Sub
End If
If InStr(Text1.Text, ".") <> 0 Then
MsgBox ("Укажите каталог, а не файл"), vbCritical
Cancel = True
Exit Sub
End If
End Sub
'----
| Windows API (Часть 2 - Введение) |
Что такое "API"?
API сокращенно Application Programming Interface(интерфейс прикладного программирования). Проще говоря, API - набор функций, которые операционная система предоставляет программисту. API обеспечивает относительно простой путь для программистов для использования полных функциональных возможностей аппаратных средств или операционной системы .
Понятие о Windows API
Windows API могут вызываться из Visual Basic для выполнения задач,для которых недостаточно стандартного программного кода Visual Basic и позволяют использовать новые функциональные возможности, принципиально не реализуемых на уровне встроенных возможностей языка.Например,стандартные средства Visual Basic не позволяют перезагрузить компьютер.Однако перезагрузку можно выполнить через обращение к соответствующей функции Window API.Кроме того,существует возможность замены встроенных операторов языка на альтернативные варианты, которые на уровне Windows API зачастую выполняются быстрее
32-разрядные версии Windows, или 95/98 или NT, обычно используют один и тот же набор функций API, хотя имеются некоторые различия между платформами. 32-разрядный API содержит многочисленные расширения и поддержки к устаревшему 16-разрядному API, используемому в Windows 3.x. Старые функции поддерживаются по причинам совместимости. Однако, 32-разрядные приложения должны использовать исключительно 32-разрядные функции. Это не проблема, так как 16-разрядные функции обычно заменялись подобными функциями.
Как организованы функции Windows API ?
Почти все функции, которые составляют Windows API - внутри DLL (Dynamic Link Library) . Эти dll-файлы находятся в системной папке Windows.Существует свыше 1000 функций API,которые условно делятся на на четыре основные категории.
| Работа с приложениями-запуск и закрытие приложений,обработка команд меню,перемещения и изменения размера окон.
| Графика-создание изображений.
| Системная информация-определение текущего диска,объем памяти,имя текущего пользователя и т.д.
| Работа с реестром-манипуляции с реестром Windows
| | | |
| Отправитель вопроса
вопросов в данном выпуске нет
|
|
| Требуются люди
Хочу напомнить, что еще пусты многие вакансии рассылки:
- Рубрика "Рецензия книг"
- Рубрика "Практикум на примерах"
Также можно просто присылать коды.
|
| Проекты группы СообЧа-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" -->
|
© 2000 - 2001 @LEXis & Design by SnoozeX Design
|
Рассылка является составной частью проекта "СообЧа - СООБщество ЧАйников"
© 2000 - 2001 СообЧа (СООБщество ЧАйников)
|
| |
Спасибо за внимание. Ваш @LEXis |
О чем писали в рассылке, которую вы читаете, за полгода до того,
как вы на нее подписались? Интересно? Прочитайте!
Архивы Subscribe.Ru - море информации.
|
Реклама
|
|