| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Почему некорректно вставляется в MTEXT из буфера обмена?

Почему некорректно вставляется в MTEXT из буфера обмена?

Ответ
Поиск в этой теме
Непрочитано 26.12.2016, 11:19 #1
Почему некорректно вставляется в MTEXT из буфера обмена?
environ
 
Регистрация: 16.07.2014
Сообщений: 9

моя цель - сделать так, чтобы обычная вставка из буфера обмена в MTEXT работала как "специальная вставка без всех видов форматирования"

написал макрос в VBA:

Код:
[Выделить все]
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  If CommandName = "MTEDIT" Then KillFormat 
End Sub

Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  If CommandName = "MTEDIT" Then KillFormat
End Sub

Sub KillFormat()
On Error Resume Next
  Dim MyData As MSForms.DataObject
  Set MyData = New MSForms.DataObject
  MyData.Clear
  MyData.GetFromClipboard
  Dim bl As Boolean
  bl = MyData.GetFormat(1)
  If bl = True Then
    Dim str As String
    Dim str2 As String
    str = MyData.GetText(1)
    str2 = "Line" 'Strings.Mid(str, 1, Strings.Len(str))
    MyData.SetText str2
    MyData.PutInClipboard
  End If
End Sub
открываю Word, набираю в Word слово "Circle", выделяю его и копирую в буфер обмена
в AutoCAD2016 2 раза кликаю на MTEXT, выполняется макрос, он заменяет в буфере обмена слово "Circle" на слово "Line" и после этого везде (и в командной строке и в однострочный текст и даже в блокнот) начинает вставляться слово "Line", а в MTEXT всё равно продолжает вставляться слово "Circle". Почему?

(Win7 SP1 #32)

Последний раз редактировалось environ, 26.12.2016 в 13:27.
Просмотров: 4295
 
Непрочитано 04.01.2017, 14:43
#2
Leu


 
Регистрация: 25.11.2016
Сообщений: 11


В буфре Windows текст может (и должен) быть в UNICODE!!!
Leu вне форума  
 
Непрочитано 04.01.2017, 22:39
#3
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Почему?
А посмотреть что фактически лежит в клипбоард до макроса и после макроса?
zamtmn вне форума  
 
Непрочитано 05.01.2017, 09:14
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от environ Посмотреть сообщение
в AutoCAD2016 2 раза кликаю на MTEXT, выполняется макрос, он заменяет в буфере обмена слово "Circle" на слово "Line" и после этого везде (и в командной строке и в однострочный текст и даже в блокнот) начинает вставляться слово "Line",
Ну потому что ты так захотел (см. 5 строчку снизу своего макроса)
Цитата:
str2 = "Line" 'Strings.Mid(str, 1, Strings.Len(str))
MyData.SetText str2
MyData.PutInClipboard
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 20.01.2017, 14:01
#5
environ


 
Регистрация: 16.07.2014
Сообщений: 9


Цитата:
Сообщение от zamtmn Посмотреть сообщение
А посмотреть что фактически лежит в клипбоард до макроса и после макроса?
О! спасибо за наводку. скачал WinXP, достал оттуда утилиту просмотра буфера обмена - в буфере обмена "Line"

Цитата:
Сообщение от VVA Посмотреть сообщение
Ну потому что ты так захотел (см. 5 строчку снизу своего макроса)
я захотел, чтобы везде вставлялось "Line", но в TEXT (и во все остальные контейнеры) вставляется "Line", а в MTEXT продолжает вставляться "Circle"

кстати заметил, что если закрыть Word, в MTEXT начинает вставляться "Line". видимо Word с MTEXTом вась-вась в обход буфера обмена

офф: кстати, как вы вставляете код, чтобы строки нумеровались?
environ вне форума  
 
Непрочитано 21.01.2017, 11:28
#6
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>О! спасибо за наводку. скачал WinXP, достал оттуда утилиту просмотра буфера обмена - в буфере обмена "Line"
Надеюсь качал бесплатно и без смс? Смотреть надо было програмными способами...
Клипборд так устроен что содержит какбы одно и тоже в разных форматах. Программа куда вставляешь выбирает подходящий ей формат и вставляет его.
Копируя в ворде слово CIRCLE мы получаем его в клипбоарде "CIRCLE" и как просто текст и как rtf и как хтмл и как кучу еще всего... Потом ты просто текст заменил на line, а в остальных форматах осталось circle. Вот и получилось что в зависимости от предпочтений того куда вставляется, вставляется поразному. Перед тем как вставлять "Line" очисти то что уже лежит в клипборде
zamtmn вне форума  
 
Автор темы   Непрочитано 27.01.2017, 15:47
#7
environ


 
Регистрация: 16.07.2014
Сообщений: 9


zamtmn, огромное спасибо!!!
помогло это:

Код:
[Выделить все]
 
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Sub ClearClip()
    OpenClipboard 0&
    EmptyClipboard
    CloseClipboard
End Sub
environ вне форума  
 
Непрочитано 27.01.2017, 16:29
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от zamtmn Посмотреть сообщение
получаем его в клипбоарде "CIRCLE" и как просто текст и как rtf и как хтмл и как кучу еще всего...
Как-то я представлял себе, что в буфере обмена находится метафайл, т.е. WMF. Или EMF.
Profan вне форума  
 
Непрочитано 27.01.2017, 21:31
#9
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


И метафайл тоже там находится, если его туда поместили как один из вариантов формата.
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Почему некорректно вставляется в MTEXT из буфера обмена?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Невидимые объекты в блоке или почему блок нереальных размеров zekatyumen Динамические блоки 4 26.06.2015 07:21
Почему вместо вставки примитивов вставляется блок? Xara Динамические блоки 2 11.08.2014 16:43
Почему блок может вставляться под углом, отличающимся от указанного пользователем? Кулик Алексей aka kpblc Динамические блоки 35 15.04.2014 01:05
Не корректная работа буфера обмена в Civil 3D 2013 black_mts Вертикальные решения на базе AutoCAD 20 21.10.2013 16:21
Почему в Автокад нет команды обновления структуры блоков при вставке блоков через буфер обмена? МишаИнженер AutoCAD 6 21.11.2012 12:07