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

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

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

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

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


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

From: "Sergey Merzlikin"

>
> А если у меня изменяется отдельный элемент на форме - скажем, надпись на
> кнопке, то что я должен делать: вызывать .Refresh для этой кнопки, или
> DoEvents?

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

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

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

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

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

> Если во
> внешнем 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"

Hello, Alexander!
You wrote in conference fido7.ru.visual.basic to "All" 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"

>
> Провел ряд экспериментов. Вот что получается в Вордах 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 "Закончился цикл"
>
> Это так и не дало мне возможности попасть в текст документа.

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


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



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




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