C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Изменение простанства ввода
ekya
Отправлено: 29.04.2004, 14:01


Ученик-кочегар

Группа: Участник
Сообщений: 27




Тренируясь в написании компонент, наткнулся на следующую проблему:

Хочу сократить область ввода текста компоненты, для того чтобы в освободившуюся область поместить кнопку (как в ComboBox),
но почему-то не получается сделать ЭТО с помощью кода, приведенного ниже.
Все получилось, вывел кнопку, но при попытке ввода текста, область ввода накрывает кнопку.
Пробовал отправлять сообщение EM_SETRECTNP, что в принципе одно и тоже — все равно не получается!!!

Помогите!!!

TMyEdit есть public от TWinControl

void __fastcall TMyEdit::CreateWnd()
{
LPRECT Loc=NULL;

Loc=(LPRECT)realloc(Loc, sizeof(RECT));

TWinControl::CreateWnd();

SetRect(Loc, 1, 1, ClientWidth — FBtnControl->Width — 2, ClientHeight + 1);
SendMessage(Handle, EM_SETRECT, 0, (LPARAM)Loc);

free(Loc);
}
xTrim
Отправлено: 29.04.2004, 14:18


Машинист паровоза

Группа: Участник
Сообщений: 208



у меня так работало
CODE

TRect Loc;
SendMessage(Handle, EM_GETRECT, 0, long(&Loc));
Loc.Bottom = ClientHeight + 1;  // +1 is workaround for windows paint bug
Loc.Right = ClientWidth — FBtnControl->Width — 1;
Loc.Top = 0;
Loc.Left = 0;
SendMessage(Handle, EM_SETRECTNP, 0, long(&Loc));
ekya
Отправлено: 30.04.2004, 15:11


Ученик-кочегар

Группа: Участник
Сообщений: 27



Хорошо — меняя размеры области и посылаяя сообщение EM_SETRECTNP, затем читая их EM_GETRECT мы должны получить измененные размеры.

У меня так не получается: читаю перед изменением (1, 1, 116, 14), посылаю (0, 0, 100, 14) и потом читаю снова и получаю (1, 1, 116, 14).

Не понимаю в чем дело. ПОМОГИТЕ!!!

Вернуться в Вопросы программирования в C++Builder