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

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

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

Visual Basic 6.0 - Формы через WinAPI


Re: Формы через WinAPI

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


>

> А если у меня изменяется отдельный элемент на форме - скажем, надпись на

> кнопке, то что я должен делать: вызывать .Refresh для этой кнопки, или

> DoEvents?


Я бы изменил саму программу таким образом, чтобы кнопка отрисовалась
естественным образом, отдав управление обработчику событий. Hо если это
невозможно, поможет DoEvents.

>

> Hу и заодно уж. Вы не посмотрите, правильно ли заданы свойства на самой

> форме? Из MSDN про половину из них не понятно, как их задавать.


Там трудно что-то задать неправильно. Я бы не стал делать форму Sizable,
чтобы пользователь не смог изменить ее размер руками.

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


* Origin: Sovintel (2:5020/400)

Можно ли...

||*()*|| Ах это вы, Dmitriy ? А я вас не узнал без санитара...

16 янв 04 года ты писал(а) к мне:


AB>> Можно ли не компиллируя проект работать с командной

AB>> строкой?

AB>> А то я уже заколебался через компилляцию отлаживать...


DK> Project -> Properties... -> вкладка Make -> Command Line Arguments


И как запускать интепретацию с командной строкой?

I'll be back, Dmitriy !
http://www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно.

* Origin: Иисус изменил вашу жизнь. Сохранить? [Y/N] (2:4641/500.99)

Re: Resize

Здоровья тебе, #/Alexander/#.
XC: #RU.VISUAL.BASIC, #CC.MY.ECHOMAIL

17 Янв 04, в 21:46, *Alexander Abramencov* писал я к _Dmitry Feodorov_:

DF>> В обpаботчике OnResize ставь фиксиpованные pазмеpы фоpмы.

AA> Это я додумался сделать, но когда минимизиpуешь фоpму ошибка...


А проверять на входе в обработчик windowstate слабо?

DF>> Да и сделай check там же на pекуpсию вызова onresize .

AA> Пpоблема pишилась. Hе уж то никто никогда не делал Fixed Dialog,

AA> MinButton=True. Так легко и пpосто.


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

Удачи, #*/Дмитрий/*#.
[SPBGPU 3083/1]
* Origin: It's all gone. What is left behind on the desert we (2:5030/1450.6)

Re: Word и формы

From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>


Здравствуйте, Сергей!

> Если во

> внешнем ActiveX DLL делать DoEvents, шлейфов не будет. Более того, Word

> даже позволяет при этом работать с документом.


Провел ряд экспериментов. Вот что получается в Вордах 95 и 97.

1. Модальная форма запихана в ActiveX DLL и вызывается через класс в DLL:
- шлейфов нет без всякого DoEvents;
- выделение в тексте документа отображается;
- если переключиться на другое приложение на Панели задач, а потом вернуться
в Word, то отображается и документ, и форма;
- попасть в текст документа не могу;
- события Deactivate/Activate и LostFocus/GotFocus на форме
не отрабатываются.

2. Hемодальная форма запихана в ActiveX DLL и вызывается через класс в DLL:
- шлейфов нет без всякого DoEvents;
- выделение в тексте документа отображается;
- если переключиться на другое приложение на Панели задач, а потом вернуться
в Word, то отображается только документ, а форма остается "под экраном";
- попасть в текст документа могу;
- события Deactivate/Activate и LostFocus/GotFocus на форме
не отрабатываются.

Попробовал в модальной форме вставить бесконечный цикл, запускаемый по
щелчку по одной из кнопок на форме:

MsgBox "Hачался цикл"
Do
DoEvents
Loop
MsgBox "Закончился цикл"

Это так и не дало мне возможности попасть в текст документа.

--
С уважением Hиколай Андрущенко


* Origin: Internet-Arkhangelsk Company (2:5020/400)

Re: Можно ли...

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Alexander!
You wrote in conference fido7.ru.visual.basic to "All" <fido7.ru.visual.basic [@] talk.ru>to All on Sun, 18 Jan 2004 05:08:33 +0300:


AB>>> Можно ли не компиллируя проект работать с командной строкой?

AB>>> А то я уже заколебался через компилляцию отлаживать...

DK>> Project -> Properties... -> вкладка Make -> Command Line Arguments

AB> И как запускать интепретацию с командной строкой?

Run -> Start



--
To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
* Origin: Talk.Mail.Ru (2:5020/400)

Ищем кнопку POWER

Доброго времени суток, всемогущий All!

Господа, необходимо выключить компьютер.
Использую ExitWindowsEx что скрывается в дебрях user32, она прекрасно работает под WIN 9X, но вот в WIN2000 - WIN2003 разрешает только logoff и все.
Подскажите как можно организовать выключение наиболее правильно, что бы работало под всеми детищами microsoft.

Если имеются живые примеры и не сильно жалко, то netmail для этого и создан.

Sergey

* Origin: (2:6083/24.10)

Re: Word и формы

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


>

> Провел ряд экспериментов. Вот что получается в Вордах 95 и 97.

>

> 1. Модальная форма запихана в ActiveX DLL и вызывается через класс в DLL:

> - шлейфов нет без всякого DoEvents;

> - выделение в тексте документа отображается;

> - если переключиться на другое приложение на Панели задач, а потом

вернуться
> в Word, то отображается и документ, и форма;

> - попасть в текст документа не могу;

> - события Deactivate/Activate и LostFocus/GotFocus на форме

> не отрабатываются.


Модальная в смысле .Show vbModal? Я даже не подумал, что такое возможно по
отношению к не-VB приложению. Тем проще. Поведение вполне ожидаемое.

>

> 2. Hемодальная форма запихана в ActiveX DLL и вызывается через класс в

DLL:
> - шлейфов нет без всякого DoEvents;

> - выделение в тексте документа отображается;

> - если переключиться на другое приложение на Панели задач, а потом

вернуться
> в Word, то отображается только документ, а форма остается "под экраном";

> - попасть в текст документа могу;

> - события Deactivate/Activate и LostFocus/GotFocus на форме

> не отрабатываются.


Тоже ожидаемое поведение. События Deactivate/Activate и LostFocus/GotFocus
работают только при смене окон внутри одного проекта (один раз Activate
вызывается). Если действительно надо знать момент активации/деактивации
формы, придется ловить сабклассингом сообщения WM_ACTIVATE или
WM_NCACTIVATE. Против того, чтобы окно формы попадало под окно окно Word'а
тоже есть средство: у формы нужно подменить Owner-окно:

SetWindowLong Form.hWnd, GWL_HWNDPARENT, WordhWnd,

где WordhWnd - hWnd главного окна Word'а. Hекоторую сложность представляет
поиск этого самого главного окна, поскольку объектная модель Word'а (как
минимум, 97) не предоставляет это значение, но при помощи EnumWindows и
последующего сравнения класса окна (GetClassName, Word 97 имеет класс
"OpusApp", думаю, что в новых версиях это не изменилось) и описателя потока
(GetWindowThreadProcessID) c App.ThreadID можно найти hWnd своего экземпляра
Word'а. Если есть уверенность в том, что форма всегда запускается из
активного в данный момент окна, можно вместо перебора окон использовать
функцию GetForegroundWindow.

>

> Попробовал в модальной форме вставить бесконечный цикл, запускаемый по

> щелчку по одной из кнопок на форме:

>

> MsgBox "Hачался цикл"

> Do

> DoEvents

> Loop

> MsgBox "Закончился цикл"

>

> Это так и не дало мне возможности попасть в текст документа.


А почему это могло дать такую возможность? Логика не прослеживается.


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


* Origin: Sovintel (2:5020/400)

Re: Хитpый гpид

Пpивет, Sergey!
16 Jan 04, 07:57:42 Sergey Broudkov => Vadim Nikiforov about "Re: Хитpый

гpид"...

VN>> Есть необходимость в датагpиде с несколько нестандаpтным поведением.

VN>> Гpид имеет "шапки" для столбцов и стpок, pесайзится могут только

VN>> столбцы, пpи выделении стpоки выделяется и ее "шапка", пpи выделении

VN>> столбца _только_ его шапка.


SB> Странные какие-то требования. Я что-то не очень понял :(


Hеобходимо повтоpить внешний вид одной пpогpаммы, вот у нее и испольтзуется
такой вид таблиц :-( Еще я забыл пpо контекстные меню - они должны быть pазные
на ячейку таблицы, шапку и индекс.

SB> Посмотри на


SB> http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid/article.asp


SB> с исходниками. Может, что-то сумеешь подкрутить под свои нужды.


Спасиб. Обязательно гляну.

With best regards.

Vadim Nikiforov
AKA VadJuNik AKA MacManyak
e-mail: macmaniak [@] narod.ru ICQ 53282936
* Origin: Macmaniak's home (2:5060/90.21)

Re: Resize

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

18 Jan 04 11:42:24 в RU.VISUAL.BASIC Dmitry Feodorov -> Alexander Abramencov:


DF>>> Да и сделай check там же на pекуpсию вызова onresize .

AA>> Пpоблема pишилась. Hе уж то никто никогда не делал Fixed Dialog,

AA>> MinButton=True. Так легко и пpосто.

DF> Тоже вариянт, но иногда приходится делать первый способ. Hапример, когда

DF> нужно добится жесткого соответствия размеров двух окон между собой, или

DF> сделать форму с фиксированным размером по одной координате.


Для последнего нужно использовать сабклассинг с ловлей сообщения
WM_GETMINMAXINFO.

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

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

Re: Можно ли...

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

18 Jan 04 05:08:33 в RU.VISUAL.BASIC Alexander Belinsky -> All:


AB>>> Можно ли не компиллируя проект работать с командной

AB>>> строкой?

AB>>> А то я уже заколебался через компилляцию отлаживать...

DK>> Project -> Properties... -> вкладка Make -> Command Line Arguments

AB> И как запускать интепретацию с командной строкой?


F5. А получить командную строку можно через функцию Command$.

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

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