Книга: Программирование КПК и смартфонов на .NET Compact Framework

Многострочный текст в кнопке

Многострочный текст в кнопке

По умолчанию текст для кнопок может содержать только одну строку. Но при желании можно изменить этот стиль с помощью функций GetWindowLong и SetWindowLong, как показано в листинге 4.3.

Листинг 4.3

[DllImport("coredll.dll")]
private static extern IntPtr GetCapture();
[DllImport("coredll.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("coredll.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex,
 int dwNewLong);
public const int GWLSTYLE = -16;
// стиль многострочного текста
public const int BS_MULTILINE = 0x2000;
private void Form1_Load(object sender, EventArgs e) {
 IntPtr hWnd;
 int style;
 this.butMultiline.Capture = true;
 hWnd = GetCapture();
 this.butMultiline.Capture = false;
 style = GetWindowLong(hWnd, GWL_STYLE);
 SetWindowLong(hWnd, GWL_STYLE, style | BS_MULTILINE);
}

В этом примере для сравнения использовались две кнопки. На каждой из них размещен достаточно длинный текст (рис. 4.2).


Рис. 4.2. Вид кнопок в процессе программирования

При загрузке формы выполняется изменение стиля для первой кнопки butMultiline, а вторая кнопка остается без изменений. После запуска приложения можно заметить, что длинный текст в первой кнопке разбивается на две строки и полностью умещается в границах кнопки. Во второй кнопке слова обрезаются, и текст просто нельзя прочитать (рис. 4.3).


Рис. 4.3. Создание многострочного текста на кнопке

ВНИМАНИЕ

Данный пример был написан еще для .NET Compact Framework 1.0. В .NET Compact Framework 2.0 нет надобности вызывать функцию GetCapture() для получения дескриптора hWnd, так как теперь поддерживается свойство Control.Handle.

Оглавление книги


Генерация: 4.539. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз