Современные решения

для защиты Windows приложений

и восстановления исходного кода

Visual Basic 6.0 - Пpокpутка в TextBox


Пpокpутка в TextBox

From: "A. Skrobov" <tyomitch [@] r66.ru>


Tue Jul 20 2004 22:22, Roman Yuakovlev wrote to A Skrobov:

RY>>>>> Правда я решил вопрос намного проще. ;)

AS>>>> Весьма любопытно - и как?

RY>>> Смеяться будете. Без апей и сабклассингов. причем делать

RY>>> Show/Hide тоже не подходило. ;)

AS>> Hу так как? :-)

RY> Я тебе исходник пришлю ;)

RY> А если загадки любишь - то загадку покажу. ;)

Давай ;-)
"В каждом исходнике должна быть загадка, а также подсказка и отгадка" (почти
анекдот)

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

разница в записи

From: "A. Skrobov" <tyomitch [@] r66.ru>


Tue Jul 20 2004 22:21, Roman Yuakovlev wrote to Alexander Trishin:

>>> У меня более ста констант. Еще как назло руку вывихнул. И сижу, к

>>> каждой приписываю As String. И думаю - а оно мне надо?

AT>> А что, Find & Replace уже не в моде?

RY> А что можно финдить и реплейсить? Учитывая, не зная, что финдить и

RY> реплейсить.

Выделил блок объявлений -> Ctrl-H -> Find what: =, Replace with: As String =,

Search: Selected Text.

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

для телепатов

Option Explicit

Public Declare Function CreateFile& Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long)
Public Declare Function CloseHandle& Lib "kernel32" (ByVal hObject As Long)
Public Declare Function GetLastError& Lib "kernel32" ()
Public Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As Long


Declare Function FlushFileBuffers& Lib "kernel32" (ByVal hFile As Long)

Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, dwOverlapped As Long) As Long
Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal dwOverlapped As Long) As Long


Public Declare Function SetFilePointer& Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long)

Public pz1 As Long, pz2 As Long

Const d2 As Double = 4294967296#
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3


Public myBlock() As Byte

Private Sub main()
Dim inHandle As Long, outHandle As Long
ReDim myBlock(99)
Dim s As String

TryOpenForRead "mytext", inHandle
TryOpenForWrite "mytext2", outHandle, 2

MakeSizes 100, pz1, pz2
SetFilePointer inHandle, pz2, pz1, 0
ReadFile inHandle, myBlock(0), 100, 0, 0&

Dim z As Long

s = myBlock
'SetFilePointer outHandle, pz2, pz1, 0
WriteFile outHandle, "1234", 4, z, 0&
FlushFileBuffers (outHandle)
MsgBox GetLastError & " " & z

SetEndOfFile outHandle

CloseHandle (inHandle)
CloseHandle (outHandle)

End Sub

Public Function TryOpenForRead(fname, hFile As Long) As Boolean
hFile& = CreateFile&(fname, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If GetLastError <> 0 Then TryOpenForRead = False Else TryOpenForRead = True

End Function

Public Function TryOpenForWrite(fname, hFile As Long, flag As Long) As Boolean
hFile& = CreateFile&(fname, GENERIC_WRITE Or GENERIC_READ, 0, 0&, flag, 0&, 0&)

If GetLastError <> 0 Then TryOpenForWrite = False Else TryOpenForWrite = True

End Function

Public Sub MakeSizes(pxx As Double, px1x As Long, px2x As Long)
Dim fs As Double
Dim px1 As Double, px2 As Double
fs = pxx
px1 = fs / d2
px1 = Int(px1)
px2 = fs - (px1 * d2)
If px2 > 2147483647# Then px2 = px2 - d2

px1x = CLng(px1)
px2x = CLng(px2)
End Sub


Полный код, чтобы понятнее было. В чем моя беда? :(


* Origin: 1134 (2:5045/44.13)

Пpокpутка в TextBox

RY>>>>>> Правда я решил вопрос намного проще. ;)

AS>>>>> Весьма любопытно - и как?

RY>>>> Смеяться будете. Без апей и сабклассингов. причем делать

RY>>>> Show/Hide тоже не подходило. ;)

AS>>> Hу так как? :-)

RY>> Я тебе исходник пришлю ;)

RY>> А если загадки любишь - то загадку покажу. ;)

AS> Давай ;-)

AS> "В каждом исходнике должна быть загадка, а также подсказка и отгадка"

AS> (почти анекдот)

http://www.listsoft.ru/14897/

Третья кнопка тулбара. ;)


* Origin: 1134 (2:5045/44.13)

ReadFile/WriteFile

RY>> Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As

RY>> Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As

RY>> Long, lpNumberOfBytesWritten As Long, dwOverlapped As Long) As

RY>> Long

AS> Hадо: ByVal dwOverlapped As Long

Блин, а я стока маялся - нихрена не работало.

А СЕЙЧАС РАБОТАЕТ! СПАСИБО!

Только неправильно работает. ;( Hо главное - хоть что-то пишет.


* Origin: 1134 (2:5045/44.13)

разница в записи

>>>> У меня более ста констант. Еще как назло руку вывихнул. И сижу, к

>>>> каждой приписываю As String. И думаю - а оно мне надо?

AT>>> А что, Find & Replace уже не в моде?

RY>> А что можно финдить и реплейсить? Учитывая, не зная, что финдить

RY>> и реплейсить.

AS> Выделил блок объявлений -> Ctrl-H -> Find what: =, Replace with: As

AS> String =, Search: Selected Text.

Так они еще не объявлены! ;)


* Origin: 1134 (2:5045/44.13)

ReadFile/WriteFile

From: "A. Skrobov" <tyomitch [@] r66.ru>


Wed Jul 21 2004 00:05, Roman Yuakovlev wrote to A. Skrobov:

RY>>> Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As

RY>>> Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As

RY>>> Long, lpNumberOfBytesWritten As Long, dwOverlapped As Long) As

RY>>> Long

AS>> Hадо: ByVal dwOverlapped As Long

RY> Блин, а я стока маялся - нихрена не работало.

RY> А СЕЙЧАС РАБОТАЕТ! СПАСИБО!

RY> Только неправильно работает. ;( Hо главное - хоть что-то пишет.

Hадо было сразу сюда писать :-)

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

Пpокpутка в TextBox

From: "A. Skrobov" <tyomitch [@] r66.ru>


Tue Jul 20 2004 23:58, Roman Yuakovlev wrote to A. Skrobov:

RY>>> А если загадки любишь - то загадку покажу. ;)

AS>> Давай ;-)

AS>> "В каждом исходнике должна быть загадка, а также подсказка и отгадка"

AS>> (почти анекдот)

RY> http://www.listsoft.ru/14897/

RY> Третья кнопка тулбара. ;)

Перетекают строки при наведении/потере фокуса. Это?

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

Пpокpутка в TextBox

RY>>>> А если загадки любишь - то загадку покажу. ;)

AS>>> Давай ;-)

AS>>> "В каждом исходнике должна быть загадка, а также подсказка и

AS>>> отгадка" (почти анекдот)

RY>> http://www.listsoft.ru/14897/

RY>> Третья кнопка тулбара. ;)

AS> Перетекают строки при наведении/потере фокуса. Это?

Что делают???


* Origin: 1134 (2:5045/44.13)

Re: работа с jpg

Hello, Max!
You wrote to "Roman Yuakovlev"
Yuakovlev [@] p13.f44.n5045.z2.fidonet.org>to Roman Yuakovlev on 19 Jul 04

00:57:22:

RY>> Hа VB есть примеры работы с JPG? А то в отличие от GIF/BMP, там

RY>> математика, а в математике я разбираюсь так же, как ... короче конус

RY>> от косинуса не отличу. :(

RY>> Может есть уже готовые реализации? Интересует все, и Progressive JPED

RY>> compression, и EXIF, и все прочее...

ME> Есть вроде на cpp что-то вроде libjpeg или как-то так; exif можно

ME> вроде бы читать с помощью класса image из gdi+ (если есть gdi+ ;)) или

ME> с помощью соответствующих api функций. С примерами не помогу :)

Я тут накатал класс для сабжа через GDI+, вместе с EXIF-ом.
Он тут, вместе с примером:
http://mix.web.ur.ru/bundle.rar
Если понравится, пиши мылом. Если что-то не так - всё равно пиши, поправлю
:-)
* Origin: Then our fish said, "Look! Look!" (2:5080/1003.16)