> > 3) Для того, чтобы в визарде, появилось то что надо Вам, > следует, на мой взгляд: > - создать некий класс CMyEdit: public СEdit; > - переопределить там всё, что Вам надо обрабатывать. Тогда > для этого класса CMyEdit Вам будет доступна обработка > WM_KEYDOWN. > - после того, как нарисуете КОНТРОЛ (Edit Control) на > диалоге, для этого контрола необходимо создать переменную - > член Вашего класса, например, диалога. В разных случаях и > для разных целей это делаю различным образом. Можете > визардом, или руками (в последнем случае не забудьте > добавить DDX_Control(pDX, IDC_ВАШ_ИДС, > m_EditВаша_Перемернная_Член);) > В вашем случае можно вначале визардом, а потом изменить > базовый класс CEdit на CMyEdit руками.
Спасибо большое. Догнался.
> > > По-моему, быстрее всего получить текущий текст > контрола, > > запихнуть туда то что надо, и записать новый текст > обратно. > > Он не может пока получить "текущий" текст.
Прошу прощения, а можно поподробней?
Копировать, прибавлять, обратно записывать не кажется мне хорошей идеей :(
прошу прощения за такие вопросы, просто очень срочно нужно.
вот короче есть EditBox (куда пишется и где редактируется текст)
требуется:
1) чтобы после каждого ввода каколибо символа вызывалась моя функция (ну нету почему то в Сlass Wizard'е события OnKeyDown для CEdit )
2) к имеющемуся тексту в этом контроле добавить один символ как можно более оптимальным методом.
если кто еще не понял, пишу чтото наподобие HyperTerminal
спасибо
[VC++] Работа с EditBox16.09.03 23:20 Автор: Ktirf <Æ Rusakov> Статус: Elderman
> 1) чтобы после каждого ввода каколибо символа вызывалась > моя функция (ну нету почему то в Сlass Wizard'е события > OnKeyDown для CEdit ) Зато есть OnChar ;)
> 2) к имеющемуся тексту в этом контроле добавить один символ > как можно более оптимальным методом. По-моему, быстрее всего получить текущий текст контрола, запихнуть туда то что надо, и записать новый текст обратно.
[VC++] Работа с EditBox17.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++] Работа с EditBox18.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++] Работа с EditBox18.09.03 08:23 Автор: void <Grebnev Valery> Статус: Elderman
> > > > > По-моему, быстрее всего получить текущий текст > > контрола, > > > запихнуть туда то что надо, и записать новый > текст > > обратно. > > > > Он не может пока получить "текущий" текст. > > Прошу прощения, а можно поподробней? > Копировать, прибавлять, обратно записывать не кажется мне > хорошей идеей :(
Мне кажется идея Ktirf-a хорошей идеей. Хотя, конечно, Вам виднее.
Если я правильно понял Ktirf-a, то он говорит о том, что часто разделяют, что есть буфер, для хранения и ОБРАБОТКИ данных (чтение, преобразование, передача), а что есть средство визуализации.
А ещё лучше разделять классы, которые собственно делают что-то с данными, с классами, которые визуализируют данные. Т.е. тараканы и котлеты - отдельно. Простите за банальность и за некоторый налёт нотации.
PS. Я уверен, что Вы и сами всё это знаете.
Простите, а что означает термин "догнался"? Я спрашиваю, поскольку знаю несколько употреблений этого слова.
Догнался - перестал лениться думать и наконец врубился :)18.09.03 14:57 Автор: vh <Дмитрий> Статус: Member
> Мне кажется идея Ktirf-a хорошей идеей. Хотя, конечно, Вам > виднее. > Если я правильно понял Ktirf-a, то он говорит о том, что > часто разделяют, что есть буфер, для хранения и ОБРАБОТКИ > данных (чтение, преобразование, передача), а что есть > средство визуализации.
Ну да, так и пришлось сделать. Хранить собственный буфер который является отражением того, что высвечивается на дисплее.
Просто обидно все время знать, что в памяти существуют две копии одних и тех же данных.