Проект: Блокнот 1.6

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Проект: Блокнот 1.6

Сообщение BV » 23.05.2005 (Пн) 1:52

Хочу вам предложить посмотреть исправленную версию Блокнота. Если в ней не будет найдено ошибок, именно эта версия появится на сайтах SoftBox, SoftLinks и др.

Но я столкнулся с интересной проблемой – оказывается, TextBox VisualBasic’а некорректно отображает бинарные данные. Проблема исчезает при использовании RichTextBox’а, но я же делаю Блокнот, а не аналог WordPad’а. В общем, если кто-то знает, как устранить этот недостаток TextBox’а, сообщите мне, и вы будете вписаны в респекты.

Требования: только Comctl32.ocx

[удалено]
Последний раз редактировалось BV 24.05.2005 (Вт) 16:00, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 24.05.2005 (Вт) 0:03

Хех... Ты вообще предыдущие посты по своему софту читаешь? :)

Повторюсь. Кодировка на лету не меняется, текст (открытый как Текст (DOS)) копируется как '???' (из твоего блокнота в него же). Ctrl+Z отменяет только последнее действие. По Esc не закрывается.

Еще в догонку.
1. Процесс редактирования текста никак не отражается на статус-баре.
2. При уменьшении размеров окна меньше определенного размера, начисто пропадает поле ввода текста и панель инструментов.
3. Не регулируется интенсивность "полупрозрачности" (может просто не нашел).
4. Не понятно на что влияет "Вид\Дополнительно\Стандартное меню".
5. Word Wrap включен постоянно и где его отключить я так и не нашел.
6. При поиске - если найденное слово оказывается под окном "Поиск текста", то оно (слово) не выделяется (вернее выделяется, но при попытке передвинуть окно "Поиск текста", выделение сбрасывается)
7. В окне "Поиск текста" постоянно выводится фраза "Образец поиска". Последняя строка, по которой осуществлялся поиск, не запоминается (то же самое верно и для окна "Замена текста").
8. В окне "Замена текста" нет кнопки "Заменить все".
9. Вообще все вспомогательные окна (как то "Поиск текста", "Замена текста" и т.д.) после выполнения операции остаются на экране, но теряют фокус - жутко неудобно. Допустим, нашел слово, нажимаю Enter, чтобы найти следующее - найденное слово удаляется из текста. По правилам хорошего тона, окно должно или исчезать с экрана, или оставаться в фокусе (см. поиск в VB IDE).

BV писал(а):Но я столкнулся с интересной проблемой – оказывается, TextBox VisualBasic’а некорректно отображает бинарные данные. Проблема исчезает при использовании RichTextBox’а, но я же делаю Блокнот, а не аналог WordPad’а.

Что мешает использовать RichTextBox и отображать в нем простой текст, без форматирования?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 0:28

Угу...

Какая у тебя ОС?
А про Esc забыл... Сделаю.

Читаю, читаю...

1. А как он должен отображаться?
5. Это что?
6. А как сделать так, чтобы при потере фокуса в TextBox'е продолжал оставаться выделенным текст?
9. А мне говорили, что так удобнее...

То, что весь Блокнот сделан для TextBox'а. Мне нужен ТОЛЬКО TextBox.

Ясно, будем работать. Спасибо за критику. :)
Последний раз редактировалось BV 21.08.2006 (Пн) 19:03, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 24.05.2005 (Вт) 0:58

BV
некорректно отображает бинарные данные

Некорректно - это как?ъ
М.Б. дело в том, что в бинарниках(а какие вообще бинарные файлы стОит открывать блокнотом???? Чего-то не понял....) некоторые байты просто не могут быть отображены ТекстБоксом(в частности, chr(7))
и очевидно он(ТекстБокс) просто игнорирует их....
Если я правильно понял, о чем речь....

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 1:16

Да, ты правильно понял, НО: как тогда Блокнот Windows отображает бинарную информацию?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 24.05.2005 (Вт) 1:30

BV
Квадратиками :D

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 1:33

Ariman
Понял! :D
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 24.05.2005 (Вт) 9:58

BV писал(а):Какая у тебя ОС?

WinXP SP1
BV писал(а):1. А как он должен отображаться?

Ну, допустим, изменил я текст, а там пишется "Изменено", потом сохранил - "Сохранено" и т.д.
BV писал(а):5. Это что?

Пренос по словам.
BV писал(а):6. А как сделать так, чтобы при потере фокуса в TextBox'е продолжал оставаться выделенным текст?

Как вариант - запоминать параметры выделения и потом их восстанавливать.
BV писал(а):9. А мне говорили, что так удобнее...

Удобнее, когда окно поиска остается в фокусе. В обшем, смотри любую софтину от того же Microsoft, хоть блокнот.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 11:15

Перенос по словам в TextBox'е - это ReadOnly свойство. В рантайме его не изменить. Или можно как-то?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.05.2005 (Вт) 11:38

Сделай два текстбокса, в одном включено, в другом выключено.
Lasciate ogni speranza, voi ch'entrate.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 11:47

Это понятно, сам так когда-то делал... Но это же через ж...

Эх, ладно, посмотрим, что ещё можно придумать.
А вот выделение меня заинтересовало!
Алибек, может ты знаешь, как оставлять видимым выделение в TextBox'е даже при потере им фокуса (как в WordPad'е и пр.)?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.05.2005 (Вт) 11:57

Оно вроде бы и так сохраняется.
По крайней мере поиграйся со свойством HiddenSelection.
Lasciate ogni speranza, voi ch'entrate.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.05.2005 (Вт) 12:04

Алибек, в очередной раз ты мне помог, спасибо! :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 31.05.2005 (Вт) 12:59

Текущая официальная версия '1.6' доступна по этой ссылке. Любые комментарии приветствуются.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 31.05.2005 (Вт) 17:08

Фундаментальное возражение: Блокнот 1.6 не загружает полностью файлы длиной больше 32767 символов. Я понимаю, да, TextBox, и грузится все быстрее, чем с RichTextBox, но... Хотелось бы иметь возможность открыть 450-килобайтный файл без проблем.
Моду создают модоки, а распространяют модозвоны.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 31.05.2005 (Вт) 22:33

Фундаментальное возражение: Блокнот 1.6 не загружает полностью файлы длиной больше 32767 символов. Я понимаю, да, TextBox, и грузится все быстрее, чем с RichTextBox, но... Хотелось бы иметь возможность открыть 450-килобайтный файл без проблем.

Ух пахнет тут старыми ограничениями, вообщем с Нотепаде в Windows 98, такая же проблема, почему же вы думаете он просит загрузить большой файл в Wordpad. :wink:
А ВБ режет текст, когда вы присваеваете свойство Text.
Для NT обойти это ограничение можна вот так:
Код: Выделить всё
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
sub main()
call setwindowstext(text1.hwnd,"Some text")
end sub

Должно работать. :roll:
الفيجوال بيسك الرابح

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 31.05.2005 (Вт) 23:26

Спасибо. Будем работать. :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 18.07.2005 (Пн) 12:26

Насчет резки: А ты попробуй сделать Текстбокс 32767 х Страница
Т.е. создаем массив стринговый и вбиваем туда стринги по 32767 символов
А потом их показывай как страницы, каждая страница - стринг:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 18.07.2005 (Пн) 14:36

Э... Это к чему?...
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 18.07.2005 (Пн) 15:27

Это если Не NT:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 18.07.2005 (Пн) 15:46

Ну я тогда вообще не понял - зачем ТБ юзать? у РТБ свойства ограниченные поставь - вот тебе и ТБ, только большие файлы потдерживает...
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88


Вернуться в Наши проекты

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

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

    TopList