информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Атака на InternetПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[VC++] Работа с EditBox 18.09.03 03:39  Число просмотров: 1261
Автор: vh <Дмитрий> Статус: Member
Отредактировано 18.09.03 03:52  Количество правок: 1
<"чистая" ссылка>
>
> 3) Для того, чтобы в визарде, появилось то что надо Вам,
> следует, на мой взгляд:
> - создать некий класс CMyEdit: public СEdit;
> - переопределить там всё, что Вам надо обрабатывать. Тогда
> для этого класса CMyEdit Вам будет доступна обработка
> WM_KEYDOWN.
> - после того, как нарисуете КОНТРОЛ (Edit Control) на
> диалоге, для этого контрола необходимо создать переменную -
> член Вашего класса, например, диалога. В разных случаях и
> для разных целей это делаю различным образом. Можете
> визардом, или руками (в последнем случае не забудьте
> добавить DDX_Control(pDX, IDC_ВАШ_ИДС,
> m_EditВаша_Перемернная_Член);)
> В вашем случае можно вначале визардом, а потом изменить
> базовый класс CEdit на CMyEdit руками.

Спасибо большое. Догнался.

>
> > По-моему, быстрее всего получить текущий текст
> контрола,
> > запихнуть туда то что надо, и записать новый текст
> обратно.
>
> Он не может пока получить "текущий" текст.

Прошу прощения, а можно поподробней?
Копировать, прибавлять, обратно записывать не кажется мне хорошей идеей :(
<programming>
[VC++] Работа с EditBox 16.09.03 21:38  
Автор: vh <Дмитрий> Статус: Member
<"чистая" ссылка>
прошу прощения за такие вопросы, просто очень срочно нужно.
вот короче есть EditBox (куда пишется и где редактируется текст)
требуется:
1) чтобы после каждого ввода каколибо символа вызывалась моя функция (ну нету почему то в Сlass Wizard'е события OnKeyDown для CEdit )
2) к имеющемуся тексту в этом контроле добавить один символ как можно более оптимальным методом.

если кто еще не понял, пишу чтото наподобие HyperTerminal

спасибо
[VC++] Работа с EditBox 16.09.03 23:20  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> 1) чтобы после каждого ввода каколибо символа вызывалась
> моя функция (ну нету почему то в Сlass Wizard'е события
> OnKeyDown для CEdit )
Зато есть OnChar ;)

> 2) к имеющемуся тексту в этом контроле добавить один символ
> как можно более оптимальным методом.
По-моему, быстрее всего получить текущий текст контрола, запихнуть туда то что надо, и записать новый текст обратно.
[VC++] Работа с EditBox 17.09.03 01:25  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
> > 1) чтобы после каждого ввода каколибо символа
> вызывалась
> > моя функция (ну нету почему то в Сlass Wizard'е
> события OnKeyDown для CEdit )

1) Для CEdit (в буквальном смысле) по определению не может быть никаких событий в Сlass Wizard'е (если, конечно, этот визард написан не Вами;)) - это фаундейшен. Обращаю внимание на буквальность моей формулировки.

2) На мой взгляд, Вы немного путаете понятие "пропертей" контрола (Edit Control), который нарисован на диалоге, и которыми можно управлять при помощи визарда VC, и понятие обработчиков событий класса (дерайвед CEdit), которыми можно тоже управлять из "визарда", и который СВЯЗАН с Вашим контролом, и для которого создана переменная-член, например, в классе Вашего диалога..

3) Для того, чтобы в визарде, появилось то что надо Вам, следует, на мой взгляд:
- создать некий класс CMyEdit: public СEdit;
- переопределить там всё, что Вам надо обрабатывать. Тогода для этого класса CMyEdit Вам будет доступна обработка WM_KEYDOWN.
- после того, как нарисуете КОНТРОЛ (Edit Control) на диалоге, для этого контрола необходимо создать переменную - член Вашего класса, например, диалога. В разных случаях и для разных целей это делаю различным образом. Можете визардом, или руками (в последнем случае не забудьте добавить DDX_Control(pDX, IDC_ВАШ_ИДС, m_EditВаша_Перемернная_Член);)
В вашем случае можно вначале визардом, а потом изменить базовый класс CEdit на CMyEdit руками.

> По-моему, быстрее всего получить текущий текст контрола,
> запихнуть туда то что надо, и записать новый текст обратно.

Он не может пока получить "текущий" текст.
[VC++] Работа с EditBox 18.09.03 03:39  
Автор: vh <Дмитрий> Статус: Member
Отредактировано 18.09.03 03:52  Количество правок: 1
<"чистая" ссылка>
>
> 3) Для того, чтобы в визарде, появилось то что надо Вам,
> следует, на мой взгляд:
> - создать некий класс CMyEdit: public СEdit;
> - переопределить там всё, что Вам надо обрабатывать. Тогда
> для этого класса CMyEdit Вам будет доступна обработка
> WM_KEYDOWN.
> - после того, как нарисуете КОНТРОЛ (Edit Control) на
> диалоге, для этого контрола необходимо создать переменную -
> член Вашего класса, например, диалога. В разных случаях и
> для разных целей это делаю различным образом. Можете
> визардом, или руками (в последнем случае не забудьте
> добавить DDX_Control(pDX, IDC_ВАШ_ИДС,
> m_EditВаша_Перемернная_Член);)
> В вашем случае можно вначале визардом, а потом изменить
> базовый класс CEdit на CMyEdit руками.

Спасибо большое. Догнался.

>
> > По-моему, быстрее всего получить текущий текст
> контрола,
> > запихнуть туда то что надо, и записать новый текст
> обратно.
>
> Он не может пока получить "текущий" текст.

Прошу прощения, а можно поподробней?
Копировать, прибавлять, обратно записывать не кажется мне хорошей идеей :(
[VC++] Работа с EditBox 18.09.03 08:23  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
> >
> > > По-моему, быстрее всего получить текущий текст
> > контрола,
> > > запихнуть туда то что надо, и записать новый
> текст
> > обратно.
> >
> > Он не может пока получить "текущий" текст.
>
> Прошу прощения, а можно поподробней?
> Копировать, прибавлять, обратно записывать не кажется мне
> хорошей идеей :(

Мне кажется идея Ktirf-a хорошей идеей. Хотя, конечно, Вам виднее.
Если я правильно понял Ktirf-a, то он говорит о том, что часто разделяют, что есть буфер, для хранения и ОБРАБОТКИ данных (чтение, преобразование, передача), а что есть средство визуализации.
А ещё лучше разделять классы, которые собственно делают что-то с данными, с классами, которые визуализируют данные. Т.е. тараканы и котлеты - отдельно. Простите за банальность и за некоторый налёт нотации.

PS. Я уверен, что Вы и сами всё это знаете.
Простите, а что означает термин "догнался"? Я спрашиваю, поскольку знаю несколько употреблений этого слова.
Догнался - перестал лениться думать и наконец врубился :) 18.09.03 14:57  
Автор: vh <Дмитрий> Статус: Member
<"чистая" ссылка>
> Мне кажется идея Ktirf-a хорошей идеей. Хотя, конечно, Вам
> виднее.
> Если я правильно понял Ktirf-a, то он говорит о том, что
> часто разделяют, что есть буфер, для хранения и ОБРАБОТКИ
> данных (чтение, преобразование, передача), а что есть
> средство визуализации.

Ну да, так и пришлось сделать. Хранить собственный буфер который является отражением того, что высвечивается на дисплее.

Просто обидно все время знать, что в памяти существуют две копии одних и тех же данных.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach