- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Программирование для карманных компьютеров - Владимир Волков
Шрифт:
Интервал:
Закладка:
? Стиль SS_CENTERIMAGE создает окно с изображением, центр которого постоянен. Если изображение больше, чем окно, то границы раздвигаются, а центр остается на месте. Если изображение меньше границ окна, то стороны остаются на месте, а незаполненная часть окна закрашивается цветом верхней левой точки изображения.
? Стиль SS_IC0N указывает, что в окне будет отображена пиктограмма, которая хранится в файле ресурсов.
? Стиль SSJ.EFT создает прямоугольник с текстом, прижатым влево.
? Стиль SS_LEFTNOWORDWRAP создает прямоугольник с текстом, прижатым влево, но без переноса. Не уместившийся в прямоугольник текст будет обрезан.
? Стиль SS_NOPREFIX запрещает интерпретацию символа амперсанда (&) как обозначения горячих клавиш.
? Стиль SS_N0TIFY заставляет орган управления оповещать родительское окно, о том, что пользователь щелкнул на элементе.
? Стиль SS_RIGHT создает прямоугольник с текстом, прижатым вправо.
Event-Driven Programming и Window MessagesКаждое окно в Windows умеет посылать и принимать сообщения Windows. На этом построена вся программная модель в линейке операционных систем Windows, включая Windows CE. Когда пользователь щелкает на элементе управления, элемент управления генерирует сообщение. Родительское окно принимает это сообщение и помещает его в очередь сообщений. Оконная процедура занимается тем, что непрерывно разбирает очередь сообщений, и если на сообщение предусмотрена какая-то реакция, эта процедура вызывает функцию, которая соответствует данному сообщению.
Сообщения генерируются РЅРµ только РїСЂРё щелчке РЅР° элементе, РЅРѕ Рё РїСЂРё РґСЂСѓРіРёС… событиях, которые СЃ РЅРёРј РїСЂРѕРёСЃС…РѕРґСЏС‚. Рто может быть изменение размера, перерисовка, выбор элемента РІ СЃРїРёСЃРєРµ или срабатывание таймера. Приложение занимается тем, что реагирует РЅР° эти события. Поэтому модель программирования РІ Windows называется Event-Driven Programming (программирование РїРѕ событиям).
Поскольку каждое окно в Windows может принимать сообщения, то любой элемент может не только посылать сообщения в родительское окно, но и сам реагировать на присланные ему сообщения. При последующей разработке примера
можно увидеть, как приложение может реагировать на событие «пользователь щелкнул на кнопке» и как сами кнопки реагируют на присланные им сообщения.
Упражнение 4.3 (продолжение)
Для того чтобы РѕРєРЅРѕ приняло сообщение, РѕРЅРѕ должно получить сообщение РІ очередь сообщений. Операцию доставки сообщения РІ очередь обеспечивает операционная система. Затем, перебирая очередь сообщений, РѕРєРЅРѕ должно идентифицировать полученное сообщение Рё обеспечить соответствующую реакцию. Перебор очереди сообщений обеспечивает цикл выборки сообщений. Р’ РєРѕРґРµ РѕРЅ описан внутри РѕСЃРЅРѕРІРЅРѕР№ функции WinMain Рё помечен комментарием // Main message loop:. Ртот РєРѕРґ автоматически создается средой разработки. Рдентификация выбранного РёР· СЃРїРёСЃРєР° сообщения РїСЂРѕРёСЃС…РѕРґРёС‚ РІ РѕРєРѕРЅРЅРѕР№ процедуре WndProc РїСЂРё помощи переключателя switch. Оконная процедура идентифицирует тип сообщения (например, WM_COMMAND) Рё его источник. Рсточник сообщения распознается РїРѕ идентификатору, который был присвоен каждой РєРЅРѕРїРєРµ РІРѕ время ее создания (параметр hMenu). РљРѕРґ соответствующей ветки case переключателя switch определяет действия, которые Р±СѓРґСѓС‚ предприняты РїСЂРё поступлении данного сообщения.
Чтобы послать сообщение окну, надо вызвать функцию SendMessage. Первым параметром в эту функцию передается идентификатор окна, которому посылается сообщение. Значит, если нужно послать сообщение окну, то следует получить его идентификатор и поместить его в соответствующую переменную, которую можно использовать при вызове функции.
8. Добавить в начало модуля, туда, где находится блок кода, обозначенный комментарием как // Global Variables: еще одну строку кода, объявляющую переменную для хранения идентификатора первой кнопки:HWNDg_hwndB1;
9. Обеспечить помещение значения в этот идентификатор. Для этого нужно изменить вызов функции создания первой кнопки, как показано ниже.
g_hwndB1=CreateWindow(TEXT (В«BUTTONВ»), TEXT (В«ButtonВ»),
BS_PUSHBUTTON | BS_NOTIFY | WS_VISIBLE | WS_CHILD,
10, 20, 100,25, hWnd, (HMENU)200, g_hInst, NULL);10. Теперь первая кнопка в левом столбце может принимать сообщения. Нужно обеспечить, обработку сообщений, посланных первой кнопкой в правом столбце. Параметр hMenu этой кнопки получил значение 207, значит, нужно обеспечить «узнавание» этого значения в переключателе switch. В функции WndProc следует отыскать блок case WM_COMMAND: (именно этот тип сообщений посылают кнопки и пункты меню, когда пользователь щелкает на них) и изменить его так, как показано в листинге 4.16. Листинг 4.16
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
//Начало добавленного кода case 200:
case 200:
SendMessage (g_hwndB1, WM_SETTEXT, 0, (LPARAM)(LPSTR)L" Svoy text");
break;
case 207:
SendMessage (g_hwndB1, WM_SETTEXT, 0, (LPARAM)(LPSTR)L" Text ot 107");
break;
case 208:
MessageBox (hWnd, L" РС‚o тело сообщения!", L" A это заголовок", 0);
break;
//Окончание добавленного кода
case IDM_HELP_ABOUT:

