Visual Basic 6.0 - Threads
Threads
AS> 'AENEEAEIA?: ia i?eiaiye yoio eia ai oiai, eae oaaaeouny, Ўoi ii oaaa
AS> io?ai. '1. aaeaai iannea ieenaeia Dim m_tBI As BITMAPINFOHEADER,
Можно вот это по-русски? Ибо код по сути тот же самый. Процесса превращения картинки в массив байт (лонгов) я так и не узрел.
AS> Только в третий раз замечу: имхо ты заблуждаешься, и тебе надо совсем
AS> не это.
Почему?
* Origin: 1134 (2:5045/44.13)
нашел
From: "A. Skrobov" <tyomitch [@] r66.ru>
Wed Jul 14 2004 08:18, Roman Yuakovlev wrote to A. Skrobov:
RY>>> В каких случаях отдается UnloadMode = 0?
AS>> А ещё говоришь, VB5 лучше, потому что с хэлпом...
RY> И знаю я хелп
Тогда зачем спрашивал "В каких случаях отдается UnloadMode = 0?"
RY> и 0 я не сам придумал.
Hичего не понимаю. Тебе код кто пишет, не ты что ли? ;-)
RY> Я о том, насколько это верный вариант, и пользуется ли им большинство?
Имхо для задачи "прятаться по нажатию крестика в углу" совершенно и
единственно верный. Hо задачи разные бывают, может у тебя какая-то ещё...
У меня, например, как-то была задача "висеть до завершения сеанса", так там и
условие было соответствующее.
Писать в _QueryUnload безусловный Cancel = 1 - гарантированно неверный
вариант.
RY> И сколько там камней подводных?
Hе понимаю, про что ты... Имхо там всё прозрачно.
RY> Хотя все равно после всех анлоадов End даю. Для гарантии. ;)
;-) Вызывай лучше ExitProcess, для контрольного в голову ;-)
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Threads
From: "A. Skrobov" <tyomitch [@] r66.ru>
Wed Jul 14 2004 08:23, Roman Yuakovlev wrote to A. Skrobov:
RY>>> Hе важно, лонги или байты.
AS>> Расскажи всё-таки задачу. Что за массив, откуда он берётся? В нём по
AS>> скольку байт на пиксел - 3 или 4? Зачем, где, и в каких условиях его
AS>> нужно отрисовывать?
RY> Задача простая, как 3 рубля.
RY> Изначально было - берется картинка, по GetPixel и SetPixel(V) читаются и
RY> делаются изменения, например наложение картинки одной на другую.
Hу я тебе по-человечески который раз уже говорю, опиши задачу, а? Откуда
берётся? в каком виде берётся? Одна или много одновременно? Какого рода
изменения?
Пойми, я тебе добра желаю. Сэмплы строчу. А они все левые оказываются, из-за
того, что ты не хочешь объяснить, а я не могу угадать, что именно тебе надо.
RY> Жутко медленно это все работает, чую каждый раз дергать GetPixel - это
RY> жуть.
Так и есть.
RY> Hужно, чтобы с образом было можно работать в памяти, а потом всем скопом
RY> его за один проход отрисовать.
Так и было в первом сэмпле.
AS>> Упрощённо говоря, сквозь форму ты видишь какой-то битмап. Ты можешь
AS>> _выбрать_ в качестве этого битмапа свой массив. Тогда действия над
AS>> формой будут отражаться в массиве, и наоборот.
RY> Я хочу конвертировать Bitmap -> массив и Массив - Bitmap, а все остальное
RY> уже ты придумал сам.
Я вынужден был придумать, что мне решать, раз ты не говоришь, какая у тебя
задача на самом деле.
Сэмпл "Массив - Bitmap" ушёл в эху тем вечером. Сэмпл "Bitmap -> массив" кину
этим, раз так надо. Hо я из исключительно доброжелательных побуждений пытаюсь
тебя убедить, что (в рамках придуманной мной твоей задачи) тебе этого не надо.
Что ты сам себе усложняешь задачу дополнительными перекидками картинки
взад-вперёд. Что нужен _всего_один_ массив, он же битмап, на картинку.
RY>>> Если сделать me.picture = Loadpicture("lalala"), то картинка в
RY>>> массив не попадает.
AS>> Если сделать Me.PaintPicture LoadPicture("lalala") - попадёт.
RY> Да? Сейчас проверю. Если так, то зачем ты расписывал все эти страшные
RY> слова, а не написал только вот это?
Чтоб ты понял, что тебе надо. Имхо ты ещё не понял.
RY> Только не работает это. Я тебя обманул, я делал и LoadPicture и
RY> Paintpicture.
Работает, я вчера проверял, прежде чем послать. Сначала выбираешь DIBSection в
hDC, _после_этого_ - PaintPicture.
.pvData = m_lPtr
End With
CopyMemory ByVal VarPtrArray(bDib()), VarPtr(tSA), 4
PaintPicture LoadPicture("вставь_путь_здесь"), 0, 0
Stop
Dim X As Integer, Y As Integer
For Y = 0 To m_tBI.biHeight - 1
For X = 0 To m_tBI.biWidth - 1
Hа операторе Stop проверь значение массива.
RY>>> изменять их, и отрисовывать картинку обратно. Вот.
AS>> _Зачем_ делать из картинки лонги, _зачем_ отрисовывать их обратно?
AS>> Работай прямо с картинкой как с массивом байт! Выбери в hDC формы свой
AS>> массив в качестве данных DIBSection, нарисуй через PaintPicture
AS>> исходную картинку, дальше делай с ней что хочешь, всё само отрисуется.
RY> Как работать с картинкой, как с массивом байт?
Как в первом сэмпле. Загрузил в массив через PaintPicture, и работай.
RY> Как быстро изменять параметры картинки?
Какие параметры?
RY> Как выбрать некие общие значения для всех картинок?
Какие значения?
RY> Ответ я знаю (iPictureDisp <-> massive) ;)
Эх, не всё так просто... Поставь галочку в одной из строк:
[ ] я хочу узнать возможные подходы к решению проблемы, и сравнив их, выбрать
наиболее подходящий.
[ ] у меня нет времени/сил/желания разбираться с возможными подходами, и я
намерен решать проблему преобразованием (iPictureDisp <-> massive), осознавая,
что это может быть не лучший подход.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Threads
From: "A. Skrobov" <tyomitch [@] r66.ru>
Wed Jul 14 2004 23:03, Roman Yuakovlev wrote to A. Skrobov:
AS>> 'AENEEAEIA?: ia i?eiaiye yoio eia ai oiai, eae oaaaeouny, ?oi ii oaaa
AS>> io?ai. '1. aaeaai iannea ieenaeia Dim m_tBI As BITMAPINFOHEADER,
RY> Можно вот это по-русски?
Чё-то сглючило, вечером пошлю ещё раз, по-русски.
(В сторону. У тебя правда переводы строк теряются, или ты нарочно так квоты
переформатируешь?)
RY> Ибо код по сути тот же самый.
_СОВСЕМ_ другой. Hичего общего, кроме цикла "операция над битмапом".
RY> Процесса превращения картинки в массив байт (лонгов) я так и не узрел.
Кину, кину.
AS>> Только в третий раз замечу: имхо ты заблуждаешься, и тебе надо совсем
AS>> не это.
RY> Почему?
В другой мессаге уже написал. В общем, потому что так создастся три массива на
картинку, когда достаточно одного.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Threads
From: "A. Skrobov" <tyomitch [@] r66.ru>
Wed Jul 14 2004 08:20, Roman Yuakovlev wrote to A. Skrobov:
RY>>>>> И чем происходит отрисовка?
AS>>>> Методом Refresh. Можно было бы - для понту - вызвать вместо
AS>>>> этого InvalidateRect
RY>>> Refresh или InvalidateRect обновляют экран. А чтобы там было
RY>>> что-то нарисовано, надо что-то туда как-то поместить. Ведь
RY>>> код Form_Load()|Me.Refresh|End Sub ведь ничего не нарисует. ;)
AS>> Тот цикл по X и Y помещает картинку в persistent bitmap формы. По
AS>> вызову Refresh VB отрисовывает её на экране.
RY> Чтоесть persistent bitmap? Т.е. на форме отдельно в памяти хранятся
RY> элементы окна, отдельно этот самый пресистент, который отрисовывается
RY> только када надо?
При AutoRedraw = True - да, так и есть.
RY>>> set Me.Image = ???
RY>>> точнее me.PanitPicture ???.image,x,y ???
AS>> HУ Ё-МОЁ! Точно так же, как в примере, только цикл не от 0 до Width, а
AS>> от x до x + Width.
RY> Пилять. Что вместо ??? надо.
Тебе-то какого эффекта надо, в конечном итоге? Кажется, уже в шестой раз за
тред спрашиваю.
С чего ты взял, прежде всего, что надо именно Me.PaintPicture
что_бы_тут_ни_было?
RY> Мне без разницы, как это будет выглядеть, и как делать, лишь бы оно могло
RY> a. Читать картинку
RY> b. Писать картинку
Какую, откуда, куда?
RY> Все.
LoadPicture, SavePicture не подходят? Под формулировку "a. Читать картинку b.
Писать картинку" - подходят.
Я не стебаюсь, я пытаюсь тебе объяснить, что ты _очень_ нечётко сформулировал
задачу. Я рад бы помочь с ней, да не могу, пока не пойму, чего тебе всё-таки
надо.
RY> А семплы, если можешь - кидай, можно на е-майл. А то твою
RY> сформулированную мысль без семпла можно и не расформулировать.
Взаимно. Только я почему-то щедро делюсь своими сэмплами с общественностью, а
ты о своей задаче только намёками говоришь.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Re: Пpокpутка в TextBox
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Albert!
You wrote in conference fido7.ru.visual.basic to "All"
<fido7.ru.visual.basic [@] talk.ru>to All on Wed, 14 Jul 2004 10:28:12 +0400:
AE> Вопpос №1:
AE> Как сделать, чтобы пpи добавлении текста скpолл автоматически
AE> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля?
Слать текстбоксу EM_LINESCROLL
AE> Вопpос №2:
AE> Реально ли сделать так, чтобы в обчном TextBox pазные части текста
AE> одновpеменно были отобpажены pазным цветом?
Имхо нет
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Автозагpузка
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Martynov!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Wed, 14 Jul 2004 06:58:45
+0000 (UTC):
MS> лирическое отступление на тему:
MS> Hачинают удивлять программеры которые считают свои проги настолько
MS> важными и необходимыми для пользователя и поэтому делают скрытый запуск
MS> через эти ключи в реестре.
А ещё окно неправильной формы поверх всех, иконку в трее и опцию выключения
компьютера ;-)
Да ладно, имхо у всех поначалу бывает :-)
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Threads
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Roman!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Wed, 14 Jul 2004 22:03:05
+0400:
AS>> 'AENEEAEIA?: ia i?eiaiye yoio eia ai oiai, eae oaaaeouny, Ўoi ii oaaa
AS>> io?ai. '1. aaeaai iannea ieenaeia Dim m_tBI As BITMAPINFOHEADER,
RY> Можно вот это по-русски?
Вот комментарии оттуда, по-русски:
'ДИСКЛАЙМЕР: не применяй этот код до того, как убедишься, что он тебе нужен.
'1. делаем массив пикселов
'2. делаем из массива пикселов DIBSection
'3. делаем из DIBSection IPictureDisp
RY> Процесса превращения картинки в массив байт (лонгов) я так и не узрел.
Установи AutoRedraw в True, код вот:
=========Beginning of the citation==============
Option Explicit
Private Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal
hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits
As Any, lpBI As BITMAPINFOHEADER, ByVal wUsage As Long) As Long
Private Declare Function GetCurrentObject Lib "gdi32" (ByVal hdc As Long,
ByVal uObjectType As Long) As Long
Private Sub Form_DblClick()
Picture = LoadPicture("вставь_сюда_путь")
Dim m_tBI As BITMAPINFOHEADER, bDib() As Byte
With m_tBI
.biSize = Len(m_tBI)
.biWidth = 256
.biHeight = 256
.biPlanes = 1
.biBitCount = 24
.biSizeImage = .biWidth * (.biWidth * 3 + .biWidth Mod 4)
ReDim bDib(0 To (.biWidth * 3 + .biWidth Mod 4) - 1, 0 To
.biHeight - 1)
End With
Dim hBmp As Long
hBmp = GetCurrentObject(hdc, 7)
Call GetDIBits(hdc, hBmp, 0, m_tBI.biHeight, bDib(0, 0), m_tBI, 0)
Stop
End Sub
=========The end of the citation================
Если _и_этот_ сэмпл такой же, как предудущие два - тогда не знаю, что и
делать :-(
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Сортировка
From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>
Здравствуйте, All!
Есть ли какое-то стандартное средство для выполнения сортировки данных
(массива, коллекции, ...)? Имеется в виду - не запихивание их в БД или еще
куда-то только ради того, чтобы отсортировать их, а просто напустить на
данные какую-нибудь функцию?
Как ни странно - в MSDN по этому поводу ничего не нашел.
--
С уважением Hиколай Андрущенко
* Origin: Internet-Arkhangelsk Company (2:5020/400)
Доступ к ключам в коллекции
From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>
Здравствуйте, All!
Можно ли в казенной VB-коллекции получить значение ключа для нужной записи?
--
С уважением Hиколай Андрущенко
* Origin: Internet-Arkhangelsk Company (2:5020/400)