Форматирование RTF EM_SETPARAFORMAT

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 30.01.2009 (Пт) 18:13

Пожалуйста, подскажите почему может не работать
lngRet = SendMessage(hwndr, EM_SETPARAFORMAT, mZERO, myparaf), где myparaf это PARAFORMAT2
Функция возвращает всё время 0?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!? :(

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 02.02.2009 (Пн) 9:36

k123 писал(а):Пожалуйста, подскажите почему может не работать
lngRet = SendMessage(hwndr, EM_SETPARAFORMAT, mZERO, myparaf), где myparaf это PARAFORMAT2
Функция возвращает всё время 0?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!? :(
А объявлено как?
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 02.02.2009 (Пн) 13:54

Код: Выделить всё
Private Structure PARAFORMAT2
        Dim cbsize As Short
        Dim dwpad As Short
        Dim dwMask As Integer
        Dim wNumbering As Short
        Dim wReserved As Short
        Dim dxStartIndent As Integer
        Dim dxRightIndent As Integer
        Dim dxOffset As Integer
        Dim wAlignment As Short
        Dim cTabCount As Short
        <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Dim lTabstops() As Integer
       Dim dySpaceBefore As Integer ' Vertical spacing before para
        Dim dySpaceAfter As Integer
        Dim dyLineSpacing As Integer ' Line spacing depending on Rule
        Dim sStyle As Short
        Dim bLineSpacingRule As Byte
        Dim bOutlineLevel As Byte
        Dim wShadingWeight As Short
        Dim wShadingStyle As Short
        Dim wNumberingStart As Short
        Dim wNumberingStyle As Short
        Dim wNumberingTab As Short
        Dim wBorderSpace As Short
        Dim wBorderWidth As Short
        Dim wBorders As Short
    End Structure

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal uMgs As Integer, ByVal wParam As Integer, ByRef lParam As PARAFORMAT2) As Integer
Далее в подпрограмме
Код: Выделить всё
Dim myparaf As PARAFORMAT2
Dim lngRet As Integer
    myparaf.cbsize = Len(myparaf)
........................................
lngRet = SendMessage(hwndr, EM_SETPARAFORMAT, mZERO, myparaf)
и всё время возвращает 0 Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!??? :(

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 02.02.2009 (Пн) 16:26

Во-первых, пользуйся тэгом CODE, а, во-вторых, а что же ты хочешь получить, передавая незаполненную структуру?
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 02.02.2009 (Пн) 18:28

Я заполняю, просто не написал
Код: Выделить всё
Dim myparaf As PARAFORMAT2
       Dim lngRet As Integer
        myparaf.cbsize = Len(myparaf)
        myparaf.dwMask = PFM_ALIGNMENT
        myparaf.wAlignment = PFA_RIGHT
       lngRet = SendMessage(hwndr, EM_SETPARAFORMAT, mZero, myparaf)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 03.02.2009 (Вт) 8:29

А какой номер ошибки возвращается? Используй для этого Marshal.GetLastWin32Error.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 03.02.2009 (Вт) 10:17

Ошибка не возвращается.
Функция возвращает 0

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 03.02.2009 (Вт) 11:21

k123 писал(а):Ошибка не возвращается.
Функция возвращает 0
Понятно, что функция возвращает 0, вызови Marshal.GetLastWin32Error и посмотри номер возвращаемой ошибки.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 03.02.2009 (Вт) 14:41

Возвращает 6

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 03.02.2009 (Вт) 15:02

Если все верно, то это ERROR_INVALID_HANDLE, то есть недопустимый описатель (дескриптор). Что-то не то передается в качестве описателя (дескриптора) окна.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 03.02.2009 (Вт) 16:22

А где описания ошибок взять?
А то сейчас мне выдало 87?

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 03.02.2009 (Вт) 17:24

Я нашёл маленькую прогу с описаниями ошибок.
не могу пока ничего понять????
С некоторыми константами функция работает, а с некоторыми нет.
С EM_SETPARAFORMAT выдаёт 0 и ошибку 126, а с EM_GETOLEINTERFACE выдаёт 1 и ошибку 127, а с EM_FORMATRANGE работает без замечаний.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 04.02.2009 (Ср) 7:56

Во-первых, в состав студии входит утилитка Error Loookup, описание ошибки можно посмотреть с ее помощью. Ну а если у тебя в составе студии установлен C++, то можно поискать файл error.h, где заданы константы ошибок и их описание.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 04.02.2009 (Ср) 11:18

Проблема с EM_GETOLEINTERFACE снята.
Я, к сожалению почти ничего не знаю о "маршалинге", а всё дело в нём. Применяя ту или иную константу, иногда, приходится по разному пользоваться "маршалингом". К сожалению в Инете по этому поводу в среде VB.NET примеров и информации мало. Теперь попробую с EM_SETPARAFORMAT и EM_GETPARAFORMAT разобраться.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 05.02.2009 (Чт) 16:23

На основном сайте читай мою статью. Некоторые моменты маршалинга там разъясняются.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 10.02.2009 (Вт) 17:18

Спасибо!
Как программно создать таблицу в RTF?
На этот вопрос, тоже, не могу найти , пока, ответа?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 11.02.2009 (Ср) 8:18

k123 писал(а):Спасибо!
Как программно создать таблицу в RTF?
На этот вопрос, тоже, не могу найти , пока, ответа?
Вариант раз: через объектную модель Word. Там есть коллекция Tables, в ней метод Add (название коллекции и методов стоит таки уточнить). Второй вариант: изучаешь формат RTF-файла и добавлешь таблицу непосредственно в файл.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 11.02.2009 (Ср) 12:07

Через Word нельзя, так как я специально ушёл от него, чтобы не быть связанным с чужой программой. Через RTF ты имеешь в виду через свойство .RTF посредством введения управляющих слов?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение Viper » 11.02.2009 (Ср) 16:46

k123 писал(а):Через RTF ты имеешь в виду через свойство .RTF посредством введения управляющих слов?
Именно так.
Весь мир матрица, а мы в нем потоки байтов!

k123
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 01.10.2007 (Пн) 10:59
Откуда: Харьков

Re: Форматирование RTF EM_SETPARAFORMAT

Сообщение k123 » 11.02.2009 (Ср) 17:26

Не самый удобный вариант, но делать нечего!!!
Получается, однако придётся много кода написать, чтобы это было удобно :D


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 78

    TopList