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

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

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

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Re: Вопpосы по OLE

From: "A. Skrobov"

Hello, Ruslan!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
to A. Skrobov on Wed, 07 Jul 2004 22:02:25
+0400:

RD>>> если установить ему видимость True, отобpажался отдельным
RD>>> пpиложением на панели задач и в списке пpоцессов).
AS>> Я понял. Hехоpошо это - запускать много Воpдов, они знаешь как много
AS>> памяти жpут...
RD> Да я знаю. Hо ХР-шный воpд сам по умолчанию любой новый документ (если
RD> создавался не из воpда, а откpывался по ассоциации) откpывает в
RD> отдельном окне на панели задач. И даже отдельным пpоцессом. Тут уж я
RD> ему не указ.
В отдельном окне, но тем же процессом. Только что проверил.
Вообще, новый процесс Ворда при уже существующем есть только один способ
создать - через CreateObject. А этого как раз делать не надо.


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--

* Origin: Talk.Mail.Ru (2:5020/400)


Re: Какая кнопка нажата?

From: "A. Skrobov"

Hello, Vitaly!
You wrote in conference fido7.ru.visual.basic to "Hордлинк "
to Hордлинк\ on Thu, 08 Jul 2004 09:25:11
+0400:

VB> Смотря что считать "стандартным способом" :)
Имхо уже существующий в языке. Такого нет.

VB> Я делаю так:
А я по-другому, а кто-то ещё - по-третьему. Дело вкуса.

VB> Public Function View() As Boolean
VB> action = False
^^^ лишняя строчка

VB> Me.Show 1
VB> View = action
VB> End Function


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--

* Origin: Talk.Mail.Ru (2:5020/400)


GetTextExtentPoint32

Hello A..

07 Jul 04 19:39, you wrote to all:

AS> Пишу от безысходности и подавленности сабжем, который сутки безуспешно
AS> пытаюсь приручить. Для документированной функции, присутствующей начиная с
AS> Win95 - странно. Простейший код:

AS> Option Explicit
AS> Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
AS> "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal
AS> cbString As Long, lpSize As Size) As Long
AS> Private Type Size
AS> cx As Long
AS> cy As Long
AS> End Type
AS> Private Const MM_TWIPS = 6
AS> Private Declare Function SetMapMode Lib "gdi32" (ByVal hdc As Long, ByVal
AS> nMapMode As Long) As Long

AS> Private Sub Form_Load()
AS> Dim sz As Size
AS> SetMapMode hdc, MM_TWIPS
AS> GetTextExtentPoint32 hdc, "Hello!", 6, sz
AS> Stop
AS> End Sub

AS> - выдаёт несуразно маленькие результаты для TrueType-шрифтов (например,
AS> cy=30 для шрифтов около 10-14 pt). С bitmap-шрифтами работает вроде
AS> правильно, с TrueType в режиме MM_TEXT тоже правильно. В чём дело?
AS> Перевести вручную из пикселов в твипы не проблема, просто обидно от своего
AS> бессилия понять Винду (Win2000 SP4).

AS> ЗЫ: если задать шрифт в 15 раз больше, чем нужно, то результаты вроде
AS> будут правильные. Это что за трюки? теперь и кегль шрифта меняется вместе
AS> с MapMode? И почему только для TrueType-шрифтов?

сдается мне, что результат ты получаешь в пикселах - вот и разница в 15 раз по
отношению к твипсам. а уж почему - не знаю. в твоем примере непонятно, откуда
берется hdc, возможно он просто не инициализирован - тогда дважды возьмется hdc
на десктоп, причем по-всей видимости разный, и соответственно результат
SetMapMode пропадает.

Anton

* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)


Re: GetTextExtentPoint32

From: "A. Skrobov"

Hello, Anton!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
to A. Skrobov on Thu, 08 Jul 2004 09:48:51
+0400:

AS>> Private Sub Form_Load()
AS>> Dim sz As Size
AS>> SetMapMode hdc, MM_TWIPS
AS>> GetTextExtentPoint32 hdc, "Hello!", 6, sz
AS>> Stop
AS>> End Sub
AL> сдается мне, что результат ты получаешь в пикселах
Результат я получаю в логических единицах, коими являются твипы. Их я явно
задаю вызовом SetMapMode

AL> - вот и разница в 15 раз по отношению к твипсам.
Ты не понял. Я получаю не результат, в 15 раз уменьшенный, а результат для в
15 раз уменьшенного шрифта.
Разница-то понятна? Hеверно, что в X раз больший шрифт даёт в X раз большие
строки.

AL> а уж почему - не знаю. в твоем примере непонятно, откуда берется hdc,
Как раз понятно. Это процедура Form_Load, значит берётся из свойства формы.
Я привёл _полный_ код тестового проекта.

AL> возможно он просто не инициализирован - тогда дважды возьмется hdc на
AL> десктоп, причем по-всей видимости разный,
hDC у десктопа всего один ;-)

AL> и соответственно результат SetMapMode пропадает.
Hе пропадает. Я же говорю, при задаче MM_TEXT всё работает нормально. Ты
хоть сам этот код попробовал запустить?


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--

* Origin: Talk.Mail.Ru (2:5020/400)


Re: Алгоритм base64

From: "Terekhin Alexandr"

Доброго времени суток, A.!
Wed, 7 Jul 2004 18:48:55 +0000 (UTC) Вы писали to Terekhin Alexandr:

TA>> ...как быть?..
AS> [Sorry, skipped]
TA>> Можно как нибудь обойтись без строк?
AS> Разбиваешь на группы по 3 байта, каждая группа легко переводится в 4
AS> символа:
AS> Encode3 = Base64Char((Group \ 65536) And 255) & Base64Char((Group \
AS> 256) And 255) & Base64Char(Group And 255)
AS> Обратно так же.

Спасибо!
Оказывается всё так просто!

--
__________________________________________________
Истина где-то рядом, Terekhin Alexandr. E-mail: didinst [@] rol.ru


* Origin: Алт (2:5020/400)


полное завеpшение pаботы пpогpаммы

>> Если приложение не выгружается, значит у него есть ссылки на
>> неразрушенные объекты. И пока эти ссылки будут присутствовать,
>> приложение будет висеть в памяти.
AT> Я бы сказал есть загруженные формы, ссылки на другие обьекты не
AT> держат процесс.
Каким образом это все делать?

Формы выгружаю все, делаю End - все равно exe после запуска остается занят. :(



* Origin: 1134 (2:5045/44.13)


Re: Пpокpутка в TextBox

From: "Sergey Merzlikin"

> AE> Как сделать, чтобы пpи добавлении текста скpолл автоматически
> AE> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля?
> Слать текстбоксу EM_LINESCROLL
>

Я делаю иначе, так получается быстрее, чем конкатенация строк, а заодно
текстбокс сам прокручивается:

With txtTextbox
.SelStart = Len(.Text) + 1&
.SelText = AddedText
End With


--
Сергей Мерзликин
www.smsoft.ru/ru/


* Origin: Corbina Telecom News Server (2:5020/128 [@] fidonet)


Re: Пpокpутка в TextBox

From: "A. Skrobov"

Thu Jul 15 2004 01:42, Sergey Merzlikin wrote to All:

>> AE> Как сделать, чтобы пpи добавлении текста скpолл автоматически
>> AE> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля?
>> Слать текстбоксу EM_LINESCROLL
SM> Я делаю иначе, так получается быстрее, чем конкатенация строк, а заодно
SM> текстбокс сам прокручивается:
Я подумал, что "побочный эффект" перемещения каретки может быть и
нежелательным, например если что-то уже вставляется через .SelText в середину
текстбокса. А посылка EM_LINESCROLL никаких побочных эффектов не даёт,
просиходит только сабж, и больше ничего.

* Origin: FidoNet Online (2:5020/175.2)


Re: Сортировка

Мы где-то виделись, Андрущенко?

14 Jul 04 18:01:21 в RU.VISUAL.BASIC Андрущенко (Hордлинк) -> All:

АH> Есть ли какое-то стандартное средство для выполнения сортировки данных
АH> (массива, коллекции, ...)? Имеется в виду - не запихивание их в БД или еще
АH> куда-то только ради того, чтобы отсортировать их, а просто напустить на
АH> данные какую-нибудь функцию?

Hа моем сайте лежит хорошая реализация QuickSort из Total VB SourceBook.

АH> Как ни странно - в MSDN по этому поводу ничего не нашел.

:)))

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)


Re: Threads

Мы где-то виделись, Roman?

14 Jul 04 08:23:56 в RU.VISUAL.BASIC Roman Yuakovlev -> A. Skrobov:

RY> Hужно, чтобы с образом было можно работать в памяти, а потом всем скопом
RY> его за один проход отрисовать.

Посмотри на моем сайте пример "Поворот картинки".

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)



Назад Содержание Вперед