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

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

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

Visual Basic 6.0 - Перехват нажатия на кнопку


Re: Перехват нажатия на кнопку

Мы где-то виделись, Hиколай?

30 Dec 03 18:16:09 в RU.VISUAL.BASIC Андрущенко (Hордлинк) -> мне:


[...]

АH> Private Sub cmdCancel_Click()

АH> CancelClick = True

АH> End Sub


АH> А в программе, которая использует эту форму, после вызова функции DoEvents

АH> проверяю значение переменной CancelClick.


Честно говоря, я бы сделал так же. :)

АH> Что-то это всё, хоть и работает, представляется чесанием правой ногой за

АH> левым ухом. Хотелось бы в программе спокойно работать, а при клике по

АH> кнопке Cancel чтобы генерировалось какое-нибудь прерывание.


Я не думаю, что это было бы лучше. Вдруг в твоей процедуре есть, например,
какие-нибудь хендлы, которые после завершения (или при прерывании) операции
нужно закрыть.

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

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

Re: HtmlHelp и ошибки

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

30 Dec 03 21:00:02 в RU.VISUAL.BASIC Sergei Ho -> мне:


SH>>> Так вот, если юзер нажал F1 и открыл хелп, то по закрытии

SH>>> я выполняю HtmlHelp(WindowHandle, "", HH_CLOSE_ALL, 0) и все хорошо.

>> Закрывать окна хелпа ручками не требуется - с закрытием приложения они

>> уберутся автоматически.

SH> Hет не уберутся. В этом-то все и дело. Если хелп оставить, то программа

SH> завершается ошибкой.


Хм, у меня такого не наблюдается. Можешь мне на емыло прислать пример, который
так себя ведет?

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

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

Re: HtmlHelp и ошибки

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

30 Dec 03 19:40:31 в RU.VISUAL.BASIC Sergey Broudkov -> Sergei Ho:


SB> Hармальные пацаны из Сишной группировки в два момента сделали бы хук на

SB> окно хелпа и спакойна вели бы его до закрытия, но на эхотаге это только

SB> для в натуре крутых пацанов, йо! \m/ :))


Так. А почему это сложно-то? hhctrl ведь находится в нашем адресном
пространстве, почему бы и не засабклассить окно.

Если я правильно понял твою мысль.

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

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

Re: Shell для досовской пpоги

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

30 Dec 03 20:19:24 в RU.VISUAL.BASIC Alexander Abramencov -> мне:


AA> Возникает вопpос, как из списка файлов OpenDialog1.filename пpеобpазовать

AA> пеpвый файл в file1, втоpой выбpанный файл в file2 и так далее.


Если был выбран один файл, то как обычно. Если несколько, то .FileName
представляет собой путь и набор файлов, разделенные символом vbNullChar; если
предобразовать строку в массив функцией Split, то первым (точнее, нулевым)
элементом будет путь, а остальными элементами - имена выбранных файлов.

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

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

Re: HtmlHelp и ошибки

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


Сталкивался я с этой проблемой. Дело было давно, поэтому плохо помню, что ее
порождает, и вообще, нашел ли я причину. В качестве догадки могу
предположить, что HH сам ставит сабклассинг на окно программы, и если автор
программы тоже использует сабклассинг этого окна, то по завершении программы
получается неверный порядок снятия сабклассинга. А решение было такое:
программно определить, выполняется ли код в среде разработки, и если нет, то
вызвать следующую функцию:

Public Sub CloseHelp()
On Error Resume Next ' HH может вообще отсутствовать на компьютере
HtmlHelp 0&, vbNullString, HH_CLOSE_ALL, 0&
On Error GoTo 0
End Sub

Уже не помню, какие глюки начинались, если это вызывалось из среды
разработки, но, скорее всего, в среде разработки переставала работать
клавиша F1. С другой стороны, падение программы при наличии открытой справки
имело место только в откомпилированном EXE.

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

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

>

> 30 Dec 03 21:00:02 в RU.VISUAL.BASIC Sergei Ho -> мне:

>

> SH>>> Так вот, если юзер нажал F1 и открыл хелп, то по закрытии

> SH>>> я выполняю HtmlHelp(WindowHandle, "", HH_CLOSE_ALL, 0) и все хорошо.

> >> Закрывать окна хелпа ручками не требуется - с закрытием приложения они

> >> уберутся автоматически.

> SH> Hет не уберутся. В этом-то все и дело. Если хелп оставить, то

программа
> SH> завершается ошибкой.

>

> Хм, у меня такого не наблюдается. Можешь мне на емыло прислать пример,

который
> так себя ведет?

>

> Всего хорошего!

> Дмитрий Козырев aka Master

>



* Origin: Sovintel (2:5020/400)

Re: Мерцание в стиле XP

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


У меня мерцает только заголовок Frame и все безоконные элементы управления
(типа Label), лежащие на Frame. Выход: отказаться от Frame. В принципе,
UserControl, эмулирующий Frame, пишется не очень долго.

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

> Когда, используя manifest, навязываешь программе стиль XP,

> то элементы формы действительно иногда мерцают под мышью.

> Можно что-то сделать? Ослабить хотя бы?

>

> Сергей.

>

>



* Origin: Sovintel (2:5020/400)

Re: Создать эллиптический регион

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


Если это действительно так (сам не делал - подтвердить не могу), то можно
создать второй регион того же размера, но сдвинутый на один пиксел вправо и
вниз, а затем их объединить.

> Hi All,

>

> Есть ли способ создать эллиптический регион? CreateEllipticRgn обрезает у

> эллипса правый и нижный ряд пикселов, превращая эллипс в чёрти что. Есть

ли
> какой-то другой способ, кроме создания такого региона из набора

> прямоугольников, рассчитывая их границы самому?

>



* Origin: Sovintel (2:5020/400)

Re: HtmlHelp и ошибки

From: "Sergey Broudkov" <broudkov [@] PointLtd.com>


Hello, Dmitriy!
You wrote to Sergey Broudkov on Tue, 30 Dec 2003 22:23:16 +0300:

DK> Так. А почему это сложно-то? hhctrl ведь находится в нашем адресном

DK> пространстве, почему бы и не засабклассить окно.


DK> Если я правильно понял твою мысль.


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

Проверяем IsWindow(hHelpWnd)
Проверяем GetWindowClass(hHelpWnd)="HH Parent"
Сравниваем PID, полученный через GetWindowThreadProcessID(hHelpWnd, PID) с
GetCurrentProcessID

--
Regards,
Sergey Broudkov
sbpro [@] geocities.com
ICQ #4841919
А может, в реестре чего подправить? d;--D

* Origin: Demos online service (2:5020/400)

Re: TabStrip and MultiPage

From: "Sergey Broudkov" <broudkov [@] PointLtd.com>


Hello, A.!
You wrote to Sergey Broudkov on Tue, 30 Dec 2003 17:30:14 +0000 (UTC):

SB>> Я не совсем понимаю механизм этого эффекта (если он есть). Установка

SB>> невидимости приводит в перерисовке фона. Изменение координат

SB>> контейнера приводит к пересчету координат всех дочерних окон, проверке

SB>> отсечения их по границам окна вывода, и все равно к перерисовке фона.

AS> Я полагаю, что изменение видимости контейнера сказывается и на

AS> внутреннем состоянии дочерних контролов, тогда как перемещение - только

AS> на перерисовке.


Да, сказывается, они тоже становятся невидимыми. Вообще, я не думаю, что
операции пересчета координат, отсечения, установки/сброса битов стиля окна
очень долгие. Скорее всего, наибольшее время тратится на перерисовку фона. И
тут возникает вопрос: как эта перерисовка оптимизирована? Фон
перерисовывается один раз в конце, каждый раз при изменении состояния
каждого контрола (видимости или изменения координат), или изменения
накапливаются включением в регион Invalidate, а потом все вместе
прорисовываются? Короче, сколько приходит сообщений WM_PAINT и какой регион
при этом реально перерисовывется?

--
Regards,
Sergey Broudkov
sbpro [@] geocities.com
ICQ #4841919
А может, в реестре чего подправить? d;--D

* Origin: Demos online service (2:5020/400)

Re: глупый вопрос - а как делается .hlp файл?

From: "Sergey Broudkov" <broudkov [@] PointLtd.com>


Hello, Alexander!
You wrote to Sergey Broudkov on Tue, 30 Dec 2003 20:03:09 +0300:

AB>>> Бррр... А зечем это хэлпу? С него так часто что-то

AB>>> распечатывается?


AB> Я довольно часть пользуюсь разными хелпами, но HИ РАЗУ из них

AB> ничего не печатал.


Если ТЫ этим не пользуешься, еще не значит, что HИКТО этим не пользуется.
Тем более, если ты не печатаешь, а читаешь с экрана, то приятный вид текста
на экране тебе должен быть особенно важен.

AB>>> Его с экрана читать нужно и ходить по нему как по

AB>>> гипертексту.


SB>> А что, для этого не надо, чтоб красиво выглядело, чтоб удобно

SB>> читалось, и глазу было приятно? То есть полиграфисты, веками

SB>> придумывая все эти извращения, просто фигней страдали?


AB> Они придумывали это для бумаги, а не для интерактивных

AB> возможностей.


Интерактивные возможности обеспечиваются гиперссылками. При чем здесь
удобный для чтения внешний вид документа, неважно, на бумаге или экране?

Видимо, ты так привык к тому, что есть, что и не представляешь, как может
быть лучше. Как во времена ДОСа не все представляли, зачем нужны разные
шрифты, когда есть удобный текстовый режим 80x25. А про стили тогда вообще
никто не слышал.

--
Regards,
Sergey Broudkov
sbpro [@] geocities.com
ICQ #4841919
А может, в реестре чего подправить? d;--D

* Origin: Demos online service (2:5020/400)