Вставка символов и картинок в текст RTF

Тема в разделе "WASM.WIN32", создана пользователем Veter, 31 июл 2007.

  1. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Привет masm32

    RichEdit, который работает в RTF-ANSII, позволяет в ставлять символы из Unicod`a, с помощью копи-пасте. Программно - не получается, редакторы коды не понимают Unicod, или я что-то не понимаю.
    Может кто-нибудь сталкивался с этим ?

    В одной из статей встретил упоминание о том, что существует ресурс - строки символов.Что это такое , как с ними работать нигде не нашел...


    Ели не трудно дайте ссылку на описание технологии втавления картинок в RTF. Гда-то видел на форуме , найти невозможно ничего..:dntknw:
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    В своё время разбирался со вставлянием картинок в ричэдит. Мало что помню, но основные ссылки остались. Этими же методами вставляется gif точно и вроде jpg/png.
    A Rich Edit Control That Displays Bitmaps and Other OLE Objects
    Insert any HBITMAP (Bitmap) in your RichEdit Control
    Inserting a bitmap file into a CRichEditCtrl
    How to insert a bitmap into an RTF document using the RichEdit control in Visual C++ 6.0

    И вот занятное чтиво.
    Extending RichTextBox
    Extending RichTextBox - Part II
    Extending RichTextBox - Part III
    The RTF Cookbook
     
  3. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Спасибо, посмотрю, может пойму что-нибудь.
     
  4. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Только щас понял, о чём это ты ;) К RichEdit никакого отношения не имеет и никак не поможет вставлять в него юникод. Работают с ними точно также как и с любыми другими ресурсами: FindResource, LoadResource и т.д...

    Насчет юникода... должно работать. Во всяком случае в спецификации это определено. Кстати, советую разобраться с потоковым водом/выводом в/из ричэдита. Это сложнее, но на несколько порядков быстрее и можно делать всё что угодно (в пределах спецификации, разумеется).

    Rich Text Format (RTF) Version 1.5 Specification
    Word 2003: Rich Text Format (RTF) Specification, version 1.8

    По потоковому в/в можно глянуть тут:

    Ввод-вывод в RichEdit
    Painless streaming of rich text to/from CRichEditCtrl
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Простые строки? LoadString. Если ещё таблицы строк, но они больше для FormatMessage.
     
  6. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Одна из основных проблем - редактор кода MasmBuildere не понимает Unicod. А так было бы просто ReplaiseSel там какойнить.
    Да и никакие редакторы его почему-то не понимают.

    а вот это ещё код :

    mov ax, "s"

    Можно как-нибудь по другому реализовать? Предположим код символа в U. - 2663
    НО,если редактор кода не хочет ловить мышей - нужно как-то числом символ вставлять , он в ax не влезет и куда его совать? Тёмный лес,короче.
     
  7. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Формат RTF вызывает у меня , пока, чувство глубокого недоумения...

    Вставляю в пустой файл символ - трефа ,например. В другой тоже пустой ,- пика . Смотрю на них, смотрю... отличаются они 1 цифрой( 4 и 7 ) но если поменять 4 на 7 hex редактором , пики не получается а получеется квадратик ... странно

    Кстати из всех hex - редакторов больше всего нравится "Tea" (можно редактировать) да он и универсальный к тому-же, но написан не на асме... Его можно скачать на freeware.ru
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А его никто не понимает, т.к. масм жуёт сорцы только в ansi. Вставляй символы через "syms dw 2663, 2663, 0".
     
  9. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Ммм... Не обратил внимания на BEGINNERS и, наверное, шибко мудрёных ссылок надавал ;)
     
  10. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Оказывается в Word`e - символы, их можно посмотреть, - в 16-ричном представлении :)
    Код (Text):
    1.  
    2. EditWndProc PROC hEdit:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    3.                                
    4.                             .if uMsg==WM_CHAR
    5. mov eax,wParam
    6.                             .if al =="т"                  
    7. mov ax,02663h          
    8.                     .endif  
    9. invoke CallWindowProc,OldWndProc,hEdit,uMsg,eax,lParam
    10. ret
    11.     .else
    12. invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam
    13. ret
    14.     .endif      
    15.     xor eax,eax
    16.     ret
    17. EditWndProc endp
    Это код, как легко увидеть, вставляет символ трефы при нажатии "т". Уже полегче...
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Не понял фразы.
     
  12. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Сори, если непонятно выразился - чтобы не искать кодировки unicoda, можно посмотреть в Worde - при вставке символа - он пишет его код.
    У меня целая куча доков, а кодировок U. почему-то нет.(их конечно можно найти, но инет - 2 р мгбт и этих мгбт-ов всегда не хватает ...)
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    CharMap.exe поможет.
     
  14. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Спасибо , я просто ещё слепой котёнок...Пока вырасту - все уже перейдут на 64 бита, и 8 процессоров...и монитор 30 дюймов, с разрешением 2.800 на 2.400.

    Как угнаться за прогрессом?
    Можт не гнаться за ним, а начать програмировать для 128-битных процессоров?
    Сори за грустное лирическое отступление..
     
  15. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    Veter
    Не расстраивайся. Прогресс в процессорной области, по сути, уже как лет пять топчется на месте. 64 бита - это уже надолго. Единственная опасность того, что знания обесценятся - это если изобретут квантовый компьютер, который массово войдёт в нашу жизнь :).
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Да.. 82'' — «пойду посмотрю, что там в трее мигает…» © бор.
     
  17. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Идея ,мне кажется интересная , хотя,может быть и глупая - попробовать сделать эмулятор 128 процессора и соотв., 128-битный ассемблер :)
    Лет через 10 окажется ,что на Wasm.ru - ЕСТЬ программное обеспечение для таких процессоров. И наш сайт превратится в мировой центр программерской мысли!
    А разве производителя процессоров не интересно будет узнать что напрограмировали для про.,которые ещё только планируются к производству и какие возникли у нас умные мысли на этот счёт? А мы - тут-как тут .... и ....Сори за "мы" и "у нас". :dntknw:
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Veter
    Не в тему. Совсем.
     
  19. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Извиняюсь, за болтовню...
    Обнаружилось, что субклассировать редит не надо - просто послать ему :
    invoke SendMessage,hwndRichEdit,WM_CHAR,02663h,0
    и всё ок( 2663h - символ трефы :))

    Не могу решить проблему - некоторорые символы отображаются не так, как хотелось бы - слишком маленькие или большие. Если при вставке такого символа изменить его размер с помощью CHARFORMAT, - обратно параметры фонта не удается вернуть никаким образом.( Изначально фонт создается с помощью CreatIndirect - такой выглядит значительно лучшее...). Можно менять цвет и фонт остается прежним, но размер ....и все