Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Edit


Автор: ZufuS 20.12.2007, 00:50
Как установить вывод текста в центре и цвет Edit'а, и как получить его содержимое?

Автор: 586 20.12.2007, 01:49
Цитата(ZufuS @  20.12.2007,  00:50 Найти цитируемый пост)
Как установить вывод текста в центре 

стиль ES_CENTER

Цитата(ZufuS @  20.12.2007,  00:50 Найти цитируемый пост)
цвет Edit'а

WM_CTLCOLOREDIT
SetTextColor((HDC)wParam, color);
SetBkColor((HDC)wParam, bkcolor);
return (INT_PTR)GetStockObject(...);

Цитата(ZufuS @  20.12.2007,  00:50 Найти цитируемый пост)
как получить его содержимое

GetDlgItemText
GetWindowText
GetDlgItem
WM_GETTEXT

остальное в MSDN

Автор: ZufuS 20.12.2007, 02:03
А выравнивание текста по центру вертикали не предусмотрено?
Не получается установить цвет SetBkColor(GetDC(hEdit[0][0]), RGB(255,0,0));

Автор: 586 20.12.2007, 02:17
Цитата(ZufuS @  20.12.2007,  02:03 Найти цитируемый пост)
Не получается установить цвет SetBkColor(GetDC(hEdit[0][0]), RGB(255,0,0)); 

это надо делать в обработчике сообщения WM_CTLCOLOREDIT

Добавлено через 4 минуты и 24 секунды
Цитата(ZufuS @  20.12.2007,  02:03 Найти цитируемый пост)
 выравнивание текста по центру вертикали не предусмотрено?

нет. нету такого стиля. опять же читаем msdn... http://msdn2.microsoft.com/en-us/library/bb775464.aspx

Автор: ZufuS 20.12.2007, 02:42
Надо присвоить Edit'у оконную процедуру, в которой обработать WM_CTLCOLOREDIT, а затем отправить ему это сообщение?
Забыл как присваивать оконную процедуру.

Автор: 586 20.12.2007, 02:57
Цитата(ZufuS @  20.12.2007,  02:42 Найти цитируемый пост)
Надо присвоить Edit'у оконную процедуру, в которой обработать WM_CTLCOLOREDIT, а затем отправить ему это сообщение

Нет. Обрабатываешь в родительском окне (т.е. в своём). Система посылает сообщение сама.

Автор: ZufuS 20.12.2007, 03:37
Закрашиваются все Edit'ы, а мне нужно чтобы они имели разные цвета.

Автор: Mihhail 20.12.2007, 19:42
Сообщение WM_CTLCOLOREDIT  в lParam содержит дескриптор создаваемого edit'а , проверяй его и устанавливай для каждого свой цвет.

Цитата
WM_CTLCOLOREDIT  
hdcEdit = (HDC) wParam;   // handle of display context 
hwndEdit = (HWND) lParam; // handle of static control 



А что бы выводить текст по центру нужно установить ограничивающий прямоугольник:
RECT RcTm1 = {30, 30, 100, 100};
SendMessage( hwndEd, EM_SETRECT, (WPARAM)0, (LPARAM)&RcTm1 );

Здесь отступ слева и сверху 30 пикселей.
Но это только для edit'ов со стилем ES_MULTILINE.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)