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

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

Читать бесплатно Владимир Волков - Программирование для карманных компьютеров. Жанр: Программирование издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

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 создает окно с рамкой, типичной для диалоговых окон. Это окно не может иметь заголовка.

Перейти на страницу:

Владимир Волков читать все книги автора по порядку

Владимир Волков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*