Техническая поддержка :

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

для защиты Windows программ

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

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


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"

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

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

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

--
Сергей Мерзликин
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"

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

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

> Когда, используя manifest, навязываешь программе стиль XP,
> то элементы формы действительно иногда мерцают под мышью.
> Можно что-то сделать? Ослабить хотя бы?
>
> Сергей.
>
>


* Origin: Sovintel (2:5020/400)


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

From: "Sergey Merzlikin"

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

> Hi All,
>
> Есть ли способ создать эллиптический регион? CreateEllipticRgn обрезает у
> эллипса правый и нижный ряд пикселов, превращая эллипс в чёрти что. Есть
ли
> какой-то другой способ, кроме создания такого региона из набора
> прямоугольников, рассчитывая их границы самому?
>


* Origin: Sovintel (2:5020/400)


Re: HtmlHelp и ошибки

From: "Sergey Broudkov"

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"

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"

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)



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




Главная     Программы     Статьи     Разное     Форум     Контакты