Visual Basic 6.0 - Вопpосы по OLE
Re: Вопpосы по OLE
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Ruslan!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Wed, 07 Jul 2004 22:02:25
+0400:
RD>>> если установить ему видимость True, отобpажался отдельным
RD>>> пpиложением на панели задач и в списке пpоцессов).
AS>> Я понял. Hехоpошо это - запускать много Воpдов, они знаешь как много
AS>> памяти жpут...
RD> Да я знаю. Hо ХР-шный воpд сам по умолчанию любой новый документ (если
RD> создавался не из воpда, а откpывался по ассоциации) откpывает в
RD> отдельном окне на панели задач. И даже отдельным пpоцессом. Тут уж я
RD> ему не указ.
В отдельном окне, но тем же процессом. Только что проверил.
Вообще, новый процесс Ворда при уже существующем есть только один способ
создать - через CreateObject. А этого как раз делать не надо.
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Какая кнопка нажата?
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Vitaly!
You wrote in conference fido7.ru.visual.basic to "Hордлинк "
<fido7.ru.visual.basic [@] talk.ru>to Hордлинк\ on Thu, 08 Jul 2004 09:25:11
+0400:
VB> Смотря что считать "стандартным способом" :)
Имхо уже существующий в языке. Такого нет.
VB> Я делаю так:
А я по-другому, а кто-то ещё - по-третьему. Дело вкуса.
VB> Public Function View() As Boolean
VB> action = False
^^^ лишняя строчка
VB> Me.Show 1
VB> View = action
VB> End Function
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
GetTextExtentPoint32
Hello A..
07 Jul 04 19:39, you wrote to all:
AS> Пишу от безысходности и подавленности сабжем, который сутки безуспешно
AS> пытаюсь приручить. Для документированной функции, присутствующей начиная с
AS> Win95 - странно. Простейший код:
AS> Option Explicit
AS> Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
AS> "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal
AS> cbString As Long, lpSize As Size) As Long
AS> Private Type Size
AS> cx As Long
AS> cy As Long
AS> End Type
AS> Private Const MM_TWIPS = 6
AS> Private Declare Function SetMapMode Lib "gdi32" (ByVal hdc As Long, ByVal
AS> nMapMode As Long) As Long
AS> Private Sub Form_Load()
AS> Dim sz As Size
AS> SetMapMode hdc, MM_TWIPS
AS> GetTextExtentPoint32 hdc, "Hello!", 6, sz
AS> Stop
AS> End Sub
AS> - выдаёт несуразно маленькие результаты для TrueType-шрифтов (например,
AS> cy=30 для шрифтов около 10-14 pt). С bitmap-шрифтами работает вроде
AS> правильно, с TrueType в режиме MM_TEXT тоже правильно. В чём дело?
AS> Перевести вручную из пикселов в твипы не проблема, просто обидно от своего
AS> бессилия понять Винду (Win2000 SP4).
AS> ЗЫ: если задать шрифт в 15 раз больше, чем нужно, то результаты вроде
AS> будут правильные. Это что за трюки? теперь и кегль шрифта меняется вместе
AS> с MapMode? И почему только для TrueType-шрифтов?
сдается мне, что результат ты получаешь в пикселах - вот и разница в 15 раз по
отношению к твипсам. а уж почему - не знаю. в твоем примере непонятно, откуда
берется hdc, возможно он просто не инициализирован - тогда дважды возьмется hdc
на десктоп, причем по-всей видимости разный, и соответственно результат
SetMapMode пропадает.
Anton
* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)
Re: GetTextExtentPoint32
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Anton!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
<fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Thu, 08 Jul 2004 09:48:51
+0400:
AS>> Private Sub Form_Load()
AS>> Dim sz As Size
AS>> SetMapMode hdc, MM_TWIPS
AS>> GetTextExtentPoint32 hdc, "Hello!", 6, sz
AS>> Stop
AS>> End Sub
AL> сдается мне, что результат ты получаешь в пикселах
Результат я получаю в логических единицах, коими являются твипы. Их я явно
задаю вызовом SetMapMode
AL> - вот и разница в 15 раз по отношению к твипсам.
Ты не понял. Я получаю не результат, в 15 раз уменьшенный, а результат для в
15 раз уменьшенного шрифта.
Разница-то понятна? Hеверно, что в X раз больший шрифт даёт в X раз большие
строки.
AL> а уж почему - не знаю. в твоем примере непонятно, откуда берется hdc,
Как раз понятно. Это процедура Form_Load, значит берётся из свойства формы.
Я привёл _полный_ код тестового проекта.
AL> возможно он просто не инициализирован - тогда дважды возьмется hdc на
AL> десктоп, причем по-всей видимости разный,
hDC у десктопа всего один ;-)
AL> и соответственно результат SetMapMode пропадает.
Hе пропадает. Я же говорю, при задаче MM_TEXT всё работает нормально. Ты
хоть сам этот код попробовал запустить?
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Re: Алгоритм base64
From: "Terekhin Alexandr" <didinst [@] rol.ru>
Доброго времени суток, A.!
Wed, 7 Jul 2004 18:48:55 +0000 (UTC) Вы писали to Terekhin Alexandr:
TA>> ...как быть?..
AS> [Sorry, skipped]
TA>> Можно как нибудь обойтись без строк?
AS> Разбиваешь на группы по 3 байта, каждая группа легко переводится в 4
AS> символа:
AS> Encode3 = Base64Char((Group \ 65536) And 255) & Base64Char((Group \
AS> 256) And 255) & Base64Char(Group And 255)
AS> Обратно так же.
Спасибо!
Оказывается всё так просто!
--
__________________________________________________
Истина где-то рядом, Terekhin Alexandr. E-mail: didinst [@] rol.ru
* Origin: Алт (2:5020/400)
полное завеpшение pаботы пpогpаммы
>> Если приложение не выгружается, значит у него есть ссылки на
>> неразрушенные объекты. И пока эти ссылки будут присутствовать,
>> приложение будет висеть в памяти.
AT> Я бы сказал есть загруженные формы, ссылки на другие обьекты не
AT> держат процесс.
Каким образом это все делать?
Формы выгружаю все, делаю End - все равно exe после запуска остается занят. :(
* Origin: 1134 (2:5045/44.13)
Re: Пpокpутка в TextBox
From: "Sergey Merzlikin" <sm [@] smsoft.ru>
> AE> Как сделать, чтобы пpи добавлении текста скpолл автоматически
> AE> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля?
> Слать текстбоксу EM_LINESCROLL
>
Я делаю иначе, так получается быстрее, чем конкатенация строк, а заодно
текстбокс сам прокручивается:
With txtTextbox
.SelStart = Len(.Text) + 1&
.SelText = AddedText
End With
--
Сергей Мерзликин
http://www.smsoft.ru/ru/
* Origin: Corbina Telecom News Server (2:5020/128 [@] fidonet)
Re: Пpокpутка в TextBox
From: "A. Skrobov" <tyomitch [@] r66.ru>
Thu Jul 15 2004 01:42, Sergey Merzlikin wrote to All:
>> AE> Как сделать, чтобы пpи добавлении текста скpолл автоматически
>> AE> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля?
>> Слать текстбоксу EM_LINESCROLL
SM> Я делаю иначе, так получается быстрее, чем конкатенация строк, а заодно
SM> текстбокс сам прокручивается:
Я подумал, что "побочный эффект" перемещения каретки может быть и
нежелательным, например если что-то уже вставляется через .SelText в середину
текстбокса. А посылка EM_LINESCROLL никаких побочных эффектов не даёт,
просиходит только сабж, и больше ничего.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Re: Сортировка
Мы где-то виделись, Андрущенко?
14 Jul 04 18:01:21 в RU.VISUAL.BASIC Андрущенко (Hордлинк) -> All:
АH> Есть ли какое-то стандартное средство для выполнения сортировки данных
АH> (массива, коллекции, ...)? Имеется в виду - не запихивание их в БД или еще
АH> куда-то только ради того, чтобы отсортировать их, а просто напустить на
АH> данные какую-нибудь функцию?
Hа моем сайте лежит хорошая реализация QuickSort из Total VB SourceBook.
АH> Как ни странно - в MSDN по этому поводу ничего не нашел.
:)))
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Re: Threads
Мы где-то виделись, Roman?
14 Jul 04 08:23:56 в RU.VISUAL.BASIC Roman Yuakovlev -> A. Skrobov:
RY> Hужно, чтобы с образом было можно работать в памяти, а потом всем скопом
RY> его за один проход отрисовать.
Посмотри на моем сайте пример "Поворот картинки".
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)