Ну, вот сказал.
» Mark - небольшой удобный редактор
так, если и сейчас это имеет место, то:
1. пооткрывай файлов 5-10, чтобы наполнить список
2. посмотри ветку реестра HKEY_CURRENT_USER\Software\Mark Editor\MRU\
там собственно и хранятся ключи вида MRU1, MRU2 и т.д.
Значением каждого ключа и является строка с именем файла, например "E:\===Lib===\Dicts\Bases\korolew_enru.txt"
3. если в реестре эти имена отображены нормально, значит ошибка при считывании, если (как было у меня) вместо строк короткие наборы цифр или букв, значит проблема при сохранении.
Эта информация позволит мне конкретно покопаться в нужном месте.
4. что за система? какие установки?
1. пооткрывай файлов 5-10, чтобы наполнить список
2. посмотри ветку реестра HKEY_CURRENT_USER\Software\Mark Editor\MRU\
там собственно и хранятся ключи вида MRU1, MRU2 и т.д.
Значением каждого ключа и является строка с именем файла, например "E:\===Lib===\Dicts\Bases\korolew_enru.txt"
3. если в реестре эти имена отображены нормально, значит ошибка при считывании, если (как было у меня) вместо строк короткие наборы цифр или букв, значит проблема при сохранении.
Эта информация позволит мне конкретно покопаться в нужном месте.
4. что за система? какие установки?
vito333
Интересно, что при тесте всё получилось! Открыл кучу файлов, потом посмотрел историю и там нормально отобразились имена. Совершенно не понятно, потому, что всегда были "квадраты". Посмотрел ветки в реестре, там тоже имена отображаются нормально. Может это исправления в последней версии? Хотя, когда эту версию установил, то в списке файлов были квадраты... После этого список очистил. И вот только сейчас для теста проделал то, что ты попросил. Всё сработало.
Интересно, что при тесте всё получилось! Открыл кучу файлов, потом посмотрел историю и там нормально отобразились имена. Совершенно не понятно, потому, что всегда были "квадраты". Посмотрел ветки в реестре, там тоже имена отображаются нормально. Может это исправления в последней версии? Хотя, когда эту версию установил, то в списке файлов были квадраты... После этого список очистил. И вот только сейчас для теста проделал то, что ты попросил. Всё сработало.
не подскажете, почему с новой версией при открытии (и любом действии) появляются вот такие ошибки:
и
и
Harrier
всё как раз понятно - в реестре были некорректные записи, они в новой бетке так и отображались как есть, а почистив список ты избавился от квадратов в реестре.
Добавлено:
ALeXkRU
посмотрю. А старая версия работает ОК?
всё как раз понятно - в реестре были некорректные записи, они в новой бетке так и отображались как есть, а почистив список ты избавился от квадратов в реестре.
Добавлено:
ALeXkRU
посмотрю. А старая версия работает ОК?
vito333
Ok.
Ok.
[x] 22.01.06 найдены пропавшие тултипы в статусбаре.
Добавлено:
ALeXkRU
должно работать теперь
Добавлено:
ALeXkRU
должно работать теперь
vito333
теперь - такая вылезает:
раз тридцать шесть подряд
Добавлено:
Цитата:
у меня сохранилась только от 19.10 - работает
теперь - такая вылезает:
раз тридцать шесть подряд
Добавлено:
Цитата:
А старая версия работает ОК?
у меня сохранилась только от 19.10 - работает
ALeXkRU
У меня такая же проблема.
vito333
Версия от 28-12-2005 работает нормально.
У меня такая же проблема.
vito333
Версия от 28-12-2005 работает нормально.
- мелкие багфиксы.
ALeXkRU
Цитата:
представляю твои эмоции
теперь должно работать чисто
ALeXkRU
Цитата:
раз тридцать шесть подряд
представляю твои эмоции
теперь должно работать чисто
vito333
уррра!!! заработала © (кот Матроскин)
спасибо
уррра!!! заработала © (кот Матроскин)
спасибо
ALeXkRU
Подтверждаю!
vito333
Быстро починенное не считается сломавшимся. (c) Ent.
Спасибо.
Подтверждаю!
vito333
Быстро починенное не считается сломавшимся. (c) Ent.
Спасибо.
Я всех категорически приветствую.
У меня вопрос к vito333. Видел на форуме, что ты используешь TM_PLAINTEXT, вопрос в следующем, как тебе удалось победить RichEdit баг, когда в конце текста имеется \r\n - не возможно перейти на последнюю строку и скролл также не спускается до конца при прокрутке. Редактор пишется на чистом API (открытый исходный код) используется richedit20.dll. Уже изнемогаю, помогает только TM_RICHTEXT, но он не пригоден по причине того, что он форматирует специальные символы шрифта при вставке из буфера. Буду признателен за помощь.
У меня вопрос к vito333. Видел на форуме, что ты используешь TM_PLAINTEXT, вопрос в следующем, как тебе удалось победить RichEdit баг, когда в конце текста имеется \r\n - не возможно перейти на последнюю строку и скролл также не спускается до конца при прокрутке. Редактор пишется на чистом API (открытый исходный код) используется richedit20.dll. Уже изнемогаю, помогает только TM_RICHTEXT, но он не пригоден по причине того, что он форматирует специальные символы шрифта при вставке из буфера. Буду признателен за помощь.
l_Instructor_l
я специально не боролся с таким глюком. Может дело в том, что Марк сейчас может на автомате использовать как richedit20, так и richedit50w и под ХР глюка нет (на richedit50w)? либо ещё какие настройки вляют.
я специально не боролся с таким глюком. Может дело в том, что Марк сейчас может на автомате использовать как richedit20, так и richedit50w и под ХР глюка нет (на richedit50w)? либо ещё какие настройки вляют.
Спасибо за ответ буду искать.
l_Instructor_l
вообще заморочек с начальной настройкой ричедит-окна было много. Покопайся.
вообще заморочек с начальной настройкой ричедит-окна было много. Покопайся.
Заметил в версии от 20 января, но, возможно, было и раньше.
Захожу в "Поиск и замена", набираю, что искать и на что заменить; нажимаю "Заменить все". Слева от "Искать" появляется "градусник" и всё замирает. Нажимаю "Заменить" - срабатывает "заменить всё"... Вместо "Заменить" можно нажать "Искать" - эффект тот же. В версии от 23 января (вверху написано 22 января, но по дате файлов...) всё работает (точнее - не работает) так же...
Захожу в "Поиск и замена", набираю, что искать и на что заменить; нажимаю "Заменить все". Слева от "Искать" появляется "градусник" и всё замирает. Нажимаю "Заменить" - срабатывает "заменить всё"... Вместо "Заменить" можно нажать "Искать" - эффект тот же. В версии от 23 января (вверху написано 22 января, но по дате файлов...) всё работает (точнее - не работает) так же...
eLsIe
исправлено.
Появилось в последних паре бет.
исправлено.
Появилось в последних паре бет.
Есть небольшая проблемка.
При вставке из буфера mark не сбрасывает форматирование и прочие rich-text атрибуты. Например, цвет фона, таблицы и т.д. Конечно, после сохранения и повторного открытия это все исчезает. Но все-таки как-то странно наблюдать в _текстовом_ редакторе разноцветный текст, всякие рамочки и пр.
При вставке из буфера mark не сбрасывает форматирование и прочие rich-text атрибуты. Например, цвет фона, таблицы и т.д. Конечно, после сохранения и повторного открытия это все исчезает. Но все-таки как-то странно наблюдать в _текстовом_ редакторе разноцветный текст, всякие рамочки и пр.
vito333
Если ты писал на API, то возможно заметишь какую нибудь особенность у нижеприведенного минимального приложения, в сравнении со своим. Просто этот код самый минимум - уже не знаю куда рыть.
[more=code]
Код:
#include <windows.h>
#include <richedit.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMain;
HINSTANCE richDll;
HWND hRich;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(0, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszMenuName = NULL;
wc.lpszClassName = "My Class";
wc.hIconSm = NULL;
RegisterClassEx(&wc);
hMain = CreateWindowEx(0, "My Class", "My Title", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, 0, 0, hInstance, 0);
richDll = LoadLibrary("RICHED20.DLL");
hRich = CreateWindowEx(0, "RichEdit20A", NULL, WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_MULTILINE|ES_DISABLENOSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_NOHIDESEL|WS_BORDER, 10, 10, 400, 400, hMain, 0, hInstance, 0);
SendMessage(hRich,EM_SETTEXTMODE,TM_PLAINTEXT|TM_MULTILEVELUNDO|TM_MULTICODEPAGE,0);
SendMessage(hRich,WM_SETTEXT,0,(LPARAM)"Last line with carriage return\r\n");
SetFocus(hRich);
ShowWindow(hMain, nCmdShow);
UpdateWindow(hMain);
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
FreeLibrary(richDll);
return msg.wParam;
}
Если ты писал на API, то возможно заметишь какую нибудь особенность у нижеприведенного минимального приложения, в сравнении со своим. Просто этот код самый минимум - уже не знаю куда рыть.
[more=code]
Код:
#include <windows.h>
#include <richedit.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMain;
HINSTANCE richDll;
HWND hRich;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(0, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszMenuName = NULL;
wc.lpszClassName = "My Class";
wc.hIconSm = NULL;
RegisterClassEx(&wc);
hMain = CreateWindowEx(0, "My Class", "My Title", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, 0, 0, hInstance, 0);
richDll = LoadLibrary("RICHED20.DLL");
hRich = CreateWindowEx(0, "RichEdit20A", NULL, WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_MULTILINE|ES_DISABLENOSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_NOHIDESEL|WS_BORDER, 10, 10, 400, 400, hMain, 0, hInstance, 0);
SendMessage(hRich,EM_SETTEXTMODE,TM_PLAINTEXT|TM_MULTILEVELUNDO|TM_MULTICODEPAGE,0);
SendMessage(hRich,WM_SETTEXT,0,(LPARAM)"Last line with carriage return\r\n");
SetFocus(hRich);
ShowWindow(hMain, nCmdShow);
UpdateWindow(hMain);
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
FreeLibrary(richDll);
return msg.wParam;
}
vito333
UPX, please...
UPX, please...
А чего-то после одного из последних обновлений, Mark перестал запоминать последнюю строчку поиска -- приходится каждый раз заново набирать, а раньше, при нажатии Ctrl+F, в поле ввода была выделенная предыдущая строчка поиска. Можно поправить? А то удобно было
sabio
хорошо, поправлю, уже не раз мне об этом говорили.
ArtLonger
да вроде выложил сегодня.
WildCat
скачай. Сегодня я тихо выложил подправленную версию.
Добавлено:
l_Instructor_l
укороти свой пост, не надо простыни вешать.
Я выложу тебе свои настройки ричедита.
[more=Смотри тут]
//============================================================================
//
// Инициализация нового RichEdit окна
//
BOOL classDoc::RTFinit ()
//
//
{
//goto EX;
//SendMessage(_hRTF,WM_SETTEXT,0,(LPARAM)L""); // нужно, если ставить TM_PLAINTEXT
SendMessage(_hRTF,EM_SETTEXTMODE,/*TM_PLAINTEXT|*/TM_MULTILEVELUNDO|TM_MULTICODEPAGE,0); //TM_MULTICODEPAGE - default
InitCharFormat (_cf);
SetRTF_BkGrColor (_BkGrColor);
//InitCharFormat (_cf);
SetRTF_FontColor (_fontColor);
SendMessage(_hRTF,EM_SETEDITSTYLE,SES_EMULATESYSEDIT|SES_XLTCRCRLFTOCR,SES_EMULATESYSEDIT|SES_XLTCRCRLFTOCR);
//SendMessage(_hRTF,EM_SETMARGINS,EC_LEFTMARGIN/*|EC_USEFONTINFO*/,20);
// selection bar
//SendMessage(hRTF, EM_SETOPTIONS, ECOOP_OR, ECO_SELECTIONBAR);
//SendMessage(_hRTF, EM_SETOPTIONS, ECOOP_AND, ~ECO_SELECTIONBAR);
::SendMessage(_hRTF,EM_SETLANGOPTIONS,0,
::SendMessage(_hRTF,EM_GETLANGOPTIONS,0,0) & ~IMF_AUTOFONT );
::SendMessage(_hRTF,EM_SETTYPOGRAPHYOPTIONS,TO_ADVANCEDTYPOGRAPHY,TO_ADVANCEDTYPOGRAPHY);
/* --- увеличиваем ограничение размера текста --- */
::SendMessage(_hRTF,EM_EXLIMITTEXT,0,INT_MAX-2);
_docSettings.WW ? WordwrapOn () : WordwrapOff ();
_docSettings.ShowURLs ? HighlightURLs (TRUE) : HighlightURLs (FALSE); // тормозит загрузку
/* --- set event mask --- */
::SendMessage( _hRTF,EM_SETEVENTMASK,0,
ENM_MOUSEEVENTS|
ENM_KEYEVENTS|
ENM_CHANGE| // смотреть через WM_COMMAND! какое-то изменение в риче
ENM_DRAGDROPDONE| // совершена операция драг-н-дроп - надо поправить формат шрифта !!!
ENM_DROPFILES|
ENM_LINK|
//ENM_OBJECTPOSITIONS|
//ENM_PROTECTED|
//ENM_REQUESTRESIZE| // дико тормозит загрузку-ресайз РТФ-а !!!
//ENM_SCROLL|
//ENM_SCROLLEVENTS|
ENM_SELCHANGE//|
//ENM_UPDATE
);
// ЧТОБЫ КАК НОВЕНЬКИЙ )))
::SendMessage (_hRTF, EM_EMPTYUNDOBUFFER,0,0);
::SendMessage (_hRTF, EM_SETMODIFY,FALSE,0);
//EX:
return TRUE;
}
стили самого окна при создании думаю малозначимы.
[/more]
хорошо, поправлю, уже не раз мне об этом говорили.
ArtLonger
да вроде выложил сегодня.
WildCat
скачай. Сегодня я тихо выложил подправленную версию.
Добавлено:
l_Instructor_l
укороти свой пост, не надо простыни вешать.
Я выложу тебе свои настройки ричедита.
[more=Смотри тут]
//============================================================================
//
// Инициализация нового RichEdit окна
//
BOOL classDoc::RTFinit ()
//
//
{
//goto EX;
//SendMessage(_hRTF,WM_SETTEXT,0,(LPARAM)L""); // нужно, если ставить TM_PLAINTEXT
SendMessage(_hRTF,EM_SETTEXTMODE,/*TM_PLAINTEXT|*/TM_MULTILEVELUNDO|TM_MULTICODEPAGE,0); //TM_MULTICODEPAGE - default
InitCharFormat (_cf);
SetRTF_BkGrColor (_BkGrColor);
//InitCharFormat (_cf);
SetRTF_FontColor (_fontColor);
SendMessage(_hRTF,EM_SETEDITSTYLE,SES_EMULATESYSEDIT|SES_XLTCRCRLFTOCR,SES_EMULATESYSEDIT|SES_XLTCRCRLFTOCR);
//SendMessage(_hRTF,EM_SETMARGINS,EC_LEFTMARGIN/*|EC_USEFONTINFO*/,20);
// selection bar
//SendMessage(hRTF, EM_SETOPTIONS, ECOOP_OR, ECO_SELECTIONBAR);
//SendMessage(_hRTF, EM_SETOPTIONS, ECOOP_AND, ~ECO_SELECTIONBAR);
::SendMessage(_hRTF,EM_SETLANGOPTIONS,0,
::SendMessage(_hRTF,EM_GETLANGOPTIONS,0,0) & ~IMF_AUTOFONT );
::SendMessage(_hRTF,EM_SETTYPOGRAPHYOPTIONS,TO_ADVANCEDTYPOGRAPHY,TO_ADVANCEDTYPOGRAPHY);
/* --- увеличиваем ограничение размера текста --- */
::SendMessage(_hRTF,EM_EXLIMITTEXT,0,INT_MAX-2);
_docSettings.WW ? WordwrapOn () : WordwrapOff ();
_docSettings.ShowURLs ? HighlightURLs (TRUE) : HighlightURLs (FALSE); // тормозит загрузку
/* --- set event mask --- */
::SendMessage( _hRTF,EM_SETEVENTMASK,0,
ENM_MOUSEEVENTS|
ENM_KEYEVENTS|
ENM_CHANGE| // смотреть через WM_COMMAND! какое-то изменение в риче
ENM_DRAGDROPDONE| // совершена операция драг-н-дроп - надо поправить формат шрифта !!!
ENM_DROPFILES|
ENM_LINK|
//ENM_OBJECTPOSITIONS|
//ENM_PROTECTED|
//ENM_REQUESTRESIZE| // дико тормозит загрузку-ресайз РТФ-а !!!
//ENM_SCROLL|
//ENM_SCROLLEVENTS|
ENM_SELCHANGE//|
//ENM_UPDATE
);
// ЧТОБЫ КАК НОВЕНЬКИЙ )))
::SendMessage (_hRTF, EM_EMPTYUNDOBUFFER,0,0);
::SendMessage (_hRTF, EM_SETMODIFY,FALSE,0);
//EX:
return TRUE;
}
стили самого окна при создании думаю малозначимы.
[/more]
Цитата:
UPX, please...
Я вот не понимаю этого. А самому запустить UPX -9 mark.exe - это так сложно что ли?
sabio
а ты попробуй сначала сам
а ты попробуй сначала сам
Спасибо vito за код. К сожалению, проблема не решилась, но кое какие мысли появились.
К сожалению в последней версии в "окне поиск и замена" перестали запоминаться слова предыдущих поисков и в выпадающем списке только остались старые. Удалил в реестре в ветке find все FH1, FDH2 и т.д., после этого список вообще перестал открываться. Вернулся пока к старой версии, там все работает.
piterplus
Цитата:
есть такая тема
А вот еще одна находка. Для примера запускаем DxDiag.exe заходим в закладку Дисплей там копируем из ричедита текст
Неполадок не найдено.
Для проверки DirectDraw нажмите кнопку "Проверка DirectDraw".
Для проверки Direct3D нажмите кнопку "Проверка Direct3D".
Теперь запускаем Марк, и обнаруживаем следующее поведение:
если мы вставляем текст при помощи ctrl+v то текст вставляется в текущей для марка раскраске и настройках шрифта, если вставляем при помощи shift+insert то вставляется в настройках ричедита средства диагностики, то есть кружочки слева. маленькие черные буковки. То есть реализация методов вставки различны для двух казалось бы одинаковых действий.
Более интересное наблюдение будет если мы скопируем текст из закладки Файлы ДиректХ, при вставке в марк если первой была вставка по ctrl+v то шрифт нормальный, при последующей ставке по shift+insert текст вставляется уже с настройками средства дагностики, как бы мы потом не вставляли.
Цитата:
К сожалению в последней версии в "окне поиск и замена" перестали запоминаться слова предыдущих поисков и в выпадающем списке только остались старые.
есть такая тема
А вот еще одна находка. Для примера запускаем DxDiag.exe заходим в закладку Дисплей там копируем из ричедита текст
Неполадок не найдено.
Для проверки DirectDraw нажмите кнопку "Проверка DirectDraw".
Для проверки Direct3D нажмите кнопку "Проверка Direct3D".
Теперь запускаем Марк, и обнаруживаем следующее поведение:
если мы вставляем текст при помощи ctrl+v то текст вставляется в текущей для марка раскраске и настройках шрифта, если вставляем при помощи shift+insert то вставляется в настройках ричедита средства диагностики, то есть кружочки слева. маленькие черные буковки. То есть реализация методов вставки различны для двух казалось бы одинаковых действий.
Более интересное наблюдение будет если мы скопируем текст из закладки Файлы ДиректХ, при вставке в марк если первой была вставка по ctrl+v то шрифт нормальный, при последующей ставке по shift+insert текст вставляется уже с настройками средства дагностики, как бы мы потом не вставляли.
[x] 30.01.06 не запоминалась история поиска-замены.
ShIvADeSt
я пока не осознал чётко, как бы мне перехватить встроенную вставку по CTRL-V в ричедите, потому до сих пор нет единообразной нормальной вставки.
я пока не осознал чётко, как бы мне перехватить встроенную вставку по CTRL-V в ричедите, потому до сих пор нет единообразной нормальной вставки.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Какой нужен формат?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.