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)