Форум программистов, компьютерный форум CyberForum.ru

Свой компонент на основе TWinControl - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка вставками http://www.cyberforum.ru/cpp-beginners/thread270160.html
Сортировка вставками: пусть первые k элементов упорядочены по возростанию. Берется (k+1)-ый элемент и размещается среди первых k так, чтобы упорядоченными оказались k+1 элементов. Этот метод применяется при k от 1 до n-1
C++ помогите создать графический редактор я просто толбко начел изучять С++ и немогу создать графический редактор.Помогите пожалуста. http://www.cyberforum.ru/cpp-beginners/thread270155.html
Нужно подсчитать ряд с точностью до эпселон используя интегральный признак сходимости ряда C++
Нужно подсчитать ряд с точностью до эпселон используя интегральный признак сходимости ряда. Ряд: сумма по к от 1 до бесконечности ln(cos(kx))/k^2. Проблема в том, что не могу найти оценку сверху для интеграла от ln(cos(kx))/k^2. Если брать cos(kx)=1, то логарифм получается 0, и хз че с этим сделать. М б заменить логарифм другой функцией?, хз какой( помогите пожалуйста с оценкой. с кодом вообщем...
C++ Работа с BMP
Бобрового дня уважаемые обитатели. Возникло некое недопонимание определения в работе с данным форматом. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> using namespace std; int main ()
C++ Backup http://www.cyberforum.ru/cpp-beginners/thread270128.html
Дайте ссылочку на код простенькой программы резервного копирования на С++, можно и на С. Никак не могу примеры найти , а нужно сделать нечто подобное.
C++ Сжать массив отбрасыванием нулевых элементов помогите пожалуйста создать динамический массив и Сжать заданный массив b1, b2,...,bm отбрасыванием нулевых элементов! подробнее

Показать сообщение отдельно
KBEPTMEH
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12

Свой компонент на основе TWinControl - C++

04.04.2011, 21:17. Просмотров 663. Ответов 1
Метки (Все метки)

И сново здравствуйте

На этот раз пишу к Вам с небольшой проблемкой, касательно компонентов.

У меня появилась потребность создания своего поля ввода данных (как компонент Edit), который нужно реализовать на TWinControl.
Компоненты TMemo, TEdit, TCSpinEdit реализованы на TCustomEdit, а TCustomEdit в свою очередь реализован на TWinControl.

К чему это я все?
Дело в том, что создание компонента, его дальнейшее размещение, а так же добавление новых свойств и обработчиков - не вызывает проблемы.

Проблема в другом: Я никак не могу понять - Как заставить TWinControl "Ловить" и "Терять" фокус и отображать (прорисовывать) вводимый текст?

То есть к примеру, если создать компонент на основе TCustomEdit, то компонент сразу появляется в виде поля ввода и есть возможность вводить, копировать, вырезать и вставлять данные в поле ввода.
А если создать компонент на основе TWinControl, то появляется простой прямоугольник заданного размера и цвета фона (Свойство Brush, Класса TControl) и никаких действий с ним невозможно выполнить - то есть нельзя "в него" текст набирать и "из него" этот текст вырезать или копировать.

Как я понял, мне необходимо переопределять и заново обрабатывать сообщения:

C++
1
2
3
4
5
6
7
private:
  ...
  MESSAGE void __fastcall CMEnter(TWMNoParams &Message);
  MESSAGE void __fastcall CMExit(TWMNoParams &Message);
  MESSAGE void __fastcall WMPaste(TWMNoParams &Message);
  MESSAGE void __fastcall WMCut(TWMNoParams &Message);
  ...
Но с другой стороны, если их не переопределять и не обрабатывать самостоятельно, то эти сообщения будут определены и обработаны непосредственно "родителем" (Parent-ом), а именно TWinControl.

Так же, как я понимаю, мне необходимо руками рисовать Border компоненту, задавать область (TRect), в которую можно будет вводить текст, непосредственно прорисовывать данный текст и так далее ...

Но я не могу понять, как придать фокус своему компоненту на TWinControl

P.S. Нужно создать именно на TWinControl ...

Если подобная тема поднималась на форуме - "ткните мордой" пожалуйста
Сам искал по форуму похожие темы, перелистал много, но ничего похожего не нашел

Всем заранее огромное спасибо.

Добавлено через 10 минут
Так же есть мнение (в данный момент проверяю) - что фокусировка задается при помощи указания параметров:

C++
1
2
3
4
protected:
  ...
  virtual void __fastcall CreateParams( TCreateParams &Params );
  ...
Добавлено через 18 минут
Хм, накопал, что у компонента за фокусировку отвечает:

C++
1
2
3
4
5
6
7
public:
  ...
  DYNAMIC bool __fastcall Focused(void);
  DYNAMIC bool __fastcall CanFocus(void);
  ...
  virtual void __fastcall SetFocus(void);
  ...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru