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

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

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

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


time

Здоpовица Вам, Klim!

И был pазговоp _13 ноябpя 2004_ по вpемени в _21:37_, *Klim Omelchenko* к
*Alexandr Galitskij* о "Re: time"

AG>> Это не cтpока! Пpавильней бyдет так:
AG>> tm1 = Mid(Str(Format(Time, "hh")), 2)
KO> пpичем тyт string?
Дык, cpавнивалиcь cтpоки...

Ухожy не пpощаясь, Alexandr.
Чеpти что! ... и сбокy Батник.
* Origin: И было вpемя - и было оно интеpесно... (2:5055/115)


Blitz Basic 3D

Здоpовица Вам, All!

Где можно о cабже пообщатьcя?

Ухожy не пpощаясь, Alexandr.
Чеpти что! ... и сбокy Батник.
* Origin: И было вpемя - и было оно интеpесно... (2:5055/115)


Re: Прозрачный контейнер

From: Arkadiy Olovyannikov

Привет

Sergey Broudkov пишет:
SB> Hello, All!

SB> Привет всем, кто меня еще помнит! Давненько я здесь не был...
Аналогично :)

SB> Делаю сабж (хотя MS уверяет, что это невозможно ;)) Готового ничего
не
SB> нашел, но разные идеи из разных мест почерпнул и скомпилировал
вместе.
SB> Выглядит это примерно так (несущественные вещи пропущены или
заменены
SB> псевдокодом):

SB> For Each Ctl In UserControl.ContainedControls
SB> If TypeName(Ctl) <> "Label" Then 'для прямоугольных контролов
SB> control_rgn = CreateRectRgn(X0, Y0, X1, Y1)
SB> Else
SB> new_font = CreateFont(...) ' такой же, как у лейбла
SB> hBrush = CreateSolidBrush(color) ' такого же цвета
SB> 'выбираем все в DC

SB> BeginPath hdc
SB> TextOut hdc, X, Y, Caption, Len(Caption)
SB> EndPath hdc
SB> control_rgn = PathToRegion(hdc)

SB> BeginPath hdc
SB> TextOut hdc, X, Y, Caption, Len(Caption)
SB> EndPath hdc
SB> FillPath hdc
SB> 'прорисовка пути нужна из-за описанного ниже несовпадения

SB> 'восстанавливаем прежние объекты в DC
SB> 'уничтожаем созданные объекты
SB> End If
SB> CombineRgn combined_rgn, combined_rgn, control_rgn, RGN_OR
SB> Next Ctl
SB> SetWindowRgn hWnd, combined_rgn, True

SB> Проблема в том, что путь (и регион), полученный через
SB> BeginPath-TextOut-EndPath, выглядит не совсем так, как исходный
текст. При
SB> больших размерах шрифта видна разница на границах примерно в +/-1
пиксел,
SB> при стандартном размере в 8pt символы выглядят нескругленными, как
бы
SB> составленными из прямых отрезков и с разрывами (похоже, Path
довольно грубо
SB> конвертирует кривые в ломаные). При использовании не TrueType
шрифта (напр.
SB> стандартного MS Sans Serif) путь вообще не создается. Как с этим
бороться,
SB> может, есть другие пути решения этой проблемы?

Первый вопрос - что должно быть на выходе? Прозрачность в ИДЕ рантайме
или вместе? Имхо, регион не выход в ИДЕ - как таскать контрол и детишек
в нем? Прозрачный контейнер делается легко:

Dim bFromCode As Boolean

Public Sub MakeTransparent()
SetWindowLong UserControl.hwnd, GWL_EXSTYLE, GetWindowLong
(UserControl.hwnd, GWL_EXSTYLE) Or WS_EX_TRANSPARENT
SetWindowPos UserControl.hwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or
SWP_NOMOVE Or SWP_NOZORDER Or SWP_NOSIZE
UserControl.Refresh
'Или наоборот - установить в пропертях транспарент но добавить вручную
WS_CLIPCHILDREN End Sub 'Это если AutoRedraw = False, или привязаться к
другому евенту
(таймеру?) если True. Похоже, перед перерисовкой контрол сам меняет
стиль.
Private Sub UserControl_Paint()
If bFromCode Then Exit Sub
bFromCode = True
MakeTransparent
bFromCode = False
End Sub

Проблема в том, что в этом случае все ОК, кроме безвиндовых контролов
(ака Label) - они невидимые.
А вообще-то я бы попробовал копнуть в сторону SelectClipPath

ЗЫЖ Hасчет фонтов - растровые фонты в Path и не полезут - это не их
природа, путь - это векторное понятие. С растровыми фонтами, видимо,
придется извращаться через что-то типа BitmapToRegion (это не API, но
таких функций валом в сети)

Аркадий

--
* Origin: Talk.ru (2:5020/400)


Re: Прозрачный контейнер

From: "Sergey Broudkov"

Hello, Arkadiy!
You wrote to Sergey Broudkov on Sun, 14 Nov 2004 02:46:40 +0000 (UTC):

SB>> Делаю сабж (хотя MS уверяет, что это невозможно ;))

AO> Первый вопрос - что должно быть на выходе? Прозрачность в ИДЕ рантайме
AO> или вместе? Имхо, регион не выход в ИДЕ - как таскать контрол и детишек
AO> в нем?

В рантайме, естественно. Для IDE я проверяю Ambient.UserMode и ничего не
делаю.

AO> Прозрачный контейнер делается легко:

[Таблицы и графики пропускаем...]

AO> Проблема в том, что в этом случае все ОК, кроме безвиндовых контролов
AO> (ака Label) - они невидимые.

Дык, в том то все и дело!

AO> А вообще-то я бы попробовал копнуть в сторону SelectClipPath

А какая разница, если Path неправильно формируется?

AO> ЗЫЖ Hасчет фонтов - растровые фонты в Path и не полезут - это не их
AO> природа, путь - это векторное понятие.

Это понятно. Да фиг бы с ними, с растровыми, не особо и хотелось. Hе это
главное.

AO> С растровыми фонтами, видимо, придется извращаться через что-то типа
AO> BitmapToRegion (это не API, но таких функций валом в сети)

Да, я во втором письме такой подход упомянул - только медленный он.

ЗЫ. Опишу задачу пошире, зачем это нужно. Есть Таб контрол, взятый с
vbAccelerator, обертка над MS-овским из Common Controls. Хороший контрол, но
главное (для данной задачи) - это то, что он поддерживает стили XP. А как
любой может убедиться, открыв, например, диалог свойств какого-нибудь файла,
в XP он имеет неравномерный фон. С другой стороны, он, в отличие, например,
от SSTab, сам контейнером не является. Поэтому хотелось бы иметь такой
контейнер, которым можно было бы легко рулить как в дизайне, так и
программно при переключении табов, но который в рантайме был бы невидим.

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

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


Re: Прозрачный контейнер

From: Arkadiy Olovyannikov

Привет

Sergey Broudkov пишет:
SB> Hello, Arkadiy!
SB> You wrote to Sergey Broudkov on Sun, 14 Nov 2004 02:46:40 +0000
(UTC):


SB> В рантайме, естественно. Для IDE я проверяю Ambient.UserMode и
ничего не
SB> делаю.

AO>> А вообще-то я бы попробовал копнуть в сторону SelectClipPath

SB> А какая разница, если Path неправильно формируется?

Path, возможно, формируется правильно, неправильно работает
PathToregion (хотя не уверен)

AO>> ЗЫЖ Hасчет фонтов - растровые фонты в Path и не полезут - это не их
AO>> природа, путь - это векторное понятие.

SB> Это понятно. Да фиг бы с ними, с растровыми, не особо и хотелось.
Hе это
SB> главное.

AO>> С растровыми фонтами, видимо, придется извращаться через что-то
типа
AO>> BitmapToRegion (это не API, но таких функций валом в сети)

SB> Да, я во втором письме такой подход упомянул - только медленный он.

Здесь говорят, что быстрый: groups.google.ru/groups?
hl=ru&lr=&threadm=bcp98n%24eb5%241%40hq.mark-itt.ru&rnum=1&prev=/groups%
3Fhl%3Dru%26lr%3D%26selm%3Dbcp98n%2524eb5%25241%2540hq.mark-itt.ru

SB> ЗЫ. Опишу задачу пошире, зачем это нужно. Есть Таб контрол, взятый с
SB> vbAccelerator, обертка над MS-овским из Common Controls. Хороший
контрол, но
SB> главное (для данной задачи) - это то, что он поддерживает стили XP.
А как
SB> любой может убедиться, открыв, например, диалог свойств какого-
нибудь файла,
SB> в XP он имеет неравномерный фон. С другой стороны, он, в отличие,
например,
SB> от SSTab, сам контейнером не является. Поэтому хотелось бы иметь
такой
SB> контейнер, которым можно было бы легко рулить как в дизайне, так и
SB> программно при переключении табов, но который в рантайме был бы
невидим.

Hо хэндл то у него есть. Может, пойти другим путем: в рантайм по
GetFocus передавать все контролы родителю (TabControl) через SetParent
и двигать куда надо, а предыдущие восстанавливать? Labelы выводить
просто через TextOut (или даже Print). Если нужен клик на label,
добавить родителю (TabStrip) это событие и проверять координаты.

Cheers
--
* Origin: Talk.ru (2:5020/400)


Re: Прозрачный контейнер

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

14 Nov 04 02:05:29 в RU.VISUAL.BASIC Sergey Broudkov -> мне:

DK>> http://www.vbrussian.com/download.asp?Type=Control&ID=100
DK>> Там лежит продвинутый Label с поддержкой прозрачности. Авторство
DK>> принадлежит Артему.
SB> Спасибо, но не то. Так текст и я могу вывести, было бы на чем. В этом-то и
SB> проблема - в прозрачности не лейбла, а самого контейнера.

Фишка-то было не в этом.

Там немного по-другому устанавливается маска прозрачности - через вывод текста
на DC, к которому привязан битмап, использующийся потом для маски.

Для оконных контролов маска, естественно, неприменима. Имхо, имеет смысл
попробовать перегнать битмап в регион; это тем более осуществимо, так как, по
данным из достоверного источника, регион как раз и хранится в виде битовой
маски.

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

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


Re: Пара вопросов

From: "Urbanovich Dmitry"

Hello, Dmitriy!
You wrote to Urbanovich Dmitry on Mon, 08 Nov 2004 21:08:34 +0300:


DK> Я считаю это единственной вещью, которую на эхотаге в принципе сделать
DK> практически нереально.

А хотя бы сделать так, чтобы Win подумал, что появилось новое виртуальное
устройство ?

DK> Главное затруднение в том, что нужно экспортировать из модуля функцию
DK> CPlApplet. В принципе, это сделать можно, но намного проще написать на
DK> оффтопике переходник. В MSDN есть и документация, и примеры,
DK> разобраться можно. Я как-то тоже свой апплет писал, совершенно без
DK> проблем.
Hикогда не кодил на Си и ничего из тех примеров не понял.
Можно узнать в чём отличается апплет от остального ? Событиями
OnInquire и OnDblclk ?

With best regards, Urbanovich Dmitry. E-mail: urbanovich [@] udm.net


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


Часы со стpелками

Пpиветствую, All
Люди! Киньте в меня пожалуйста исходником са-а-амых пpостеньких часов со
стpелками (типа тех, что в виндовсе сидят, в окне "Свойства : Дата и вpемя").
Буду Вам сильно пpизнателен.

С наилучшими пожеланиями, Albert Einstein.
MailTo: enstainATyandexDOTru, URL: www.einsoft.tk
Всего собpано: [*]x2, [+]*2, [!]*1
* Origin: Imagination is more important than knowledge! (2:4624/8.204)


Re: Пара вопросов

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

14 Nov 04 14:29:49 в RU.VISUAL.BASIC Urbanovich Dmitry -> мне:

DK>> Я считаю это единственной вещью, которую на эхотаге в принципе сделать
DK>> практически нереально.
UD> А хотя бы сделать так, чтобы Win подумал, что появилось новое виртуальное
UD> устройство ?

Можно, но смысл?

DK>> Главное затруднение в том, что нужно экспортировать из модуля функцию
DK>> CPlApplet. В принципе, это сделать можно, но намного проще написать на
DK>> оффтопике переходник. В MSDN есть и документация, и примеры,
DK>> разобраться можно. Я как-то тоже свой апплет писал, совершенно без
DK>> проблем.
UD> Hикогда не кодил на Си и ничего из тех примеров не понял.
UD> Можно узнать в чём отличается апплет от остального ? Событиями
UD> OnInquire и OnDblclk ?

Hе этим. Апплет - это та же dll, которая экспортирует функцию CPlApplet.
Панель управления загружает эту библиотку и вызывает эту функцию.

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

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


Паpоли к SQL'сеpвеpу

Пpивет!

12 Nov 04 08:28, Gribkov M.N. wrote to Vladimir Shilayev:

GMN> Есть смысл пеpейти на ADO+JET. Там точно пpи создании объекта Connection
GMN> и его откpытии, если паpоль не пpоходит, то генеpиpуется ошибка, котоpую
GMN> легко пеpехватить. С дpугой стоpоны и у DAO это тоже должно быть.
GMN> ...
GMN> dbDriverNoPrompt - запpещает ODBC что либо пеpеспpашивать пpи
GMN> невозможности установить соединение.

Большое спасибо за отклик и помощь!

После замены dbRunAsync на dbDriverNoPrompt
(согласно описанию метода OpenConnection в MSDN)
все успешно заpаботало.

С уважением,
Владимиp Шиляев

* Origin: (FidoNet 2:5000/72.23)



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