Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование для карманных компьютеров - Владимир Волков

Программирование для карманных компьютеров - Владимир Волков

Читать онлайн Программирование для карманных компьютеров - Владимир Волков

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 44 45 46 47 48 49 50 51 52 ... 102
Перейти на страницу:

2. Открыть файл Buttons.cpp, нажать сочетание клавиш Ctrl+F для вызова окна поиска, ввести строку case WM_CREATE и найти место в коде, где используется этот текст. Этот блок кода выглядит так, как показано в листинге 4.13.

Листинг 4.13

case WM_CREATE:

g_hwndCB = CreateRpCommandBar(hWnd);

memset (&s_sai, 0, sizeof (s_sai));

s_sai.cbSize = sizeof (s_sai);

break;

3. Этот блок кода обрабатывает событие создания формы. В этот момент на форме создается полоса меню. В этот блок кода будут добавлены строки, создающие на форме кнопки. Данный блок кода нужно изменить так, как это показано в листинге 4.14. Листинг 4.14

case WM_CREATE:

g_hwndCB = CreateRpCommandBar(hWnd);

memset (&s_sai, 0, sizeof (s_sai));

s_sai.cbSize = sizeof (s_sai);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | BS_NOTIFY | WS_VISIBLE | WS_CHILD,

10, 20, 100,25, hWnd, (HMENU)200, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«CheckBoxВ»),

BS_CHECKBOXВ | WS_VISIBLE | WS_CHILD,

10, 50, 100,25, hWnd, (HMENU)201, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«AutoCheckВ»),

BS_AUTOCHECKBOXВ | WS_VISIBLE | WS_CHILD,

10, 80, 100, 25, hWnd, (HMENU)202, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«AutoChec_3StateВ»),

BS_AUTO3STATE | WS_VISIBLE | WS_CHILD,

10, 110, 100, 25, hWnd, (HMENU)203, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«RadioButton1В»),

BS_AUTORADIOBUTTON | WS_VISIBLE | WS_CHILD,

10, 140, 100, 25, hWnd, (HMENU)204, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«RadioButton2В»),

BS_AUTORADIOBUTTON | WS_VISIBLE | WS_CHILD,

10, 170, 100, 25, hWnd, (HMENU)205, g_hInst, NULL);

CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«OwnerDrawButtonВ»),

BS_PUSHBUTTON | BS_OWNERDRAW | WS_VISIBLE | WS_CHILD,

10, 200, 100, 25, hWnd, (HMENU)206, g_hInst, NULL);

CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | BS_NOTIFY | WS_VISIBLE | WS_CHILD,

125, 20, 100,25, hWnd, (HMENU)207, g_hInst, NULL);

CreateWindowEx(WS_EX_WINDOWEDGE, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,

125, 50, 100,25, hWnd, (HMENU)208, g_hInst, NULL);

CreateWindowEx(WS_EX_STATICEDGE, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,

125, 80, 100, 25, hWnd, (HMENU)209, g_hInst, NULL);

CreateWindowEx(WS_EX_TOOLWINDOW, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,

125, 110, 100, 25, hWnd, (HMENU)210, g_hInst, NULL);

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_BORDER,

125, 140, 100, 25, hWnd, (HMENU)211, g_hInst, NULL);

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_CAPTION,

125, 170, 100, 25, hWnd, (HMENU)212, g_hInst, NULL);

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),

BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_OVERLAPPED,

125, 200, 100, 25, hWnd, (HMENU)213, g_hInst, NULL);

break;

4. Следующий за этим блок кода, обрабатывающий событие прорисовки формы, приведен в листинге 4.15. Листинг 4.15

case WM_PAINT:

RECT rt;

hdc = BeginPaint(hWnd, &ps);

GetClientRect(hWnd, &rt);

FillRect(hdc, &rt, CreateSolidBrush(0xFFFF00));

//LoadString(g_hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

//DrawText(hdc, szHello, _tcslen(szHello), &rt,

//DT_SINGLELINE | DT_VCENTER | DT_CENTER);

EndPaint(hWnd, &ps);

break;

Следует обратить внимание на закомментированные строки. Это именно то изменение, которое нужно внести в код. Переведя эти строки в состояние комментария, можно предотвратить вывод на форму надписи «Hello, Word!». Добавленный в код метод FillRect закрашивает ее в цвет Magenta. Теперь нужно скомпилировать проект и запустить его. Результат выполнения программы показан на рис. 4.5.

Рис. 4.5. Результат выполнения программы Buttons.

Стоит заметить, что две нижние кнопки в правом ряду можно перетаскивать при помощи мыши. 5. Внимательно расмотрев код, можно понять, что, несмотря на разницу в поведении и внешнем виде, практически все кнопки были созданы одной и той же функцией CreateWindow. Правый ряд кнопок был создан при помощи усовершенствованного варианта этой функции CreateWindowEx.

Р’РќРРњРђРќРР•!

Несмотря на разницу в поведении и назначении, все основные элементы управления Windows (кнопки, полосы прокрутки, поля ввода текста и т. д.) представляют собой окна Windоws. Они генерируют сообщение WM_COMMAND, создаются при помощи функции Create-Window, и разница между создаваемыми элементами определяется только аргументами, которые передаются этой функции. Этот ряд элементов управления носит общее название Windows Control.

Функции CreateWindow и CreateWindowEx Синтаксис функции CreateWindow достаточно прост.

HWND CreateWindow(

LPCTSTR lpClassName,

LPCTSTR lpWindowName,

DWORD dwStyle,

int x,

int y,

int nWidth,

int nHeight,

HWND hWndParent,

HMENU hMenu,

HANDLE hInstance,

PVOID lpParam);

Расшифровка аргументов этой функции приведена в следующем списке.

? Параметр IpClassName при создании элементов управления всегда получает одно из предопределенных значений.

• Значение BUTTON создает стандартную кнопку, которая посылает в родительское окно сообщение о том, что пользователь выбрал данную кнопку.

• Значение EDIT создает поле ввода текста, которое позволяет пользователю вводить и редактировать текст.

• Значение LISTB0X создает список, из которого пользователь может выбрать одну из строк.

• Значение C0MB0B0X действует как сочетание EDIT и LISTB0X. В получившемся органе управления пользователь может как выбрать одну из строк, так и ввести ее самостоятельно.

• Значение SCROLLBAR создает полосу прокрутки.

• Значение Image создает элемент управления, предназначенный для отображения текста или графического изображения.

? Параметр IpWindowName содержит текст, который должен быть отображен в элементе управления.

? Параметр dwStyle задает стиль окна, которое будет создано. Стиль задается при помощи сочетания предопределенных значений.

• Значение WS_B0RDER создает окно с тонкой рамкой.

• Значение WS_CAPTION создает окно со строкой заголовка (включает в себя стиль WSB0RDER).

• Значение WS_CHILD создает дочернее окно. Этот стиль несовместим со стилем WSP0PUP.

• Значение WS_CLIPCHILDREN для родительского окна отключает перерисовку тех зон окна, которые заняты дочерними окнами.

• Значение WS_CLIPSIBLINGS исключает рисование в перекрытых дочерних окнах. Если одно из перекрытых дочерних окон перерисовывается, то перекрытые им области других окон не будут перерисованы.

• Значение WS_DISABLED создает неактивное окно.

• Значение WS_DLGFRAME создает окно с рамкой, типичной для диалоговых окон. Это окно не может иметь заголовка.

1 ... 44 45 46 47 48 49 50 51 52 ... 102
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование для карманных компьютеров - Владимир Волков.
Комментарии