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).
Не понимаю в чем дело. ПОМОГИТЕ!!! |
|
|