18112

Кнопки. Приложение Windows

Доклад

Информатика, кибернетика и программирование

Кнопки Для создания кнопки приложение должно создать дочернее окно на базе предопределенного класса button. После этого родительское окно будет получать от кнопки сообщение с кодом WM_COMMAND. Этим сообщением кнопка информирует родительское окно о том что с ней чтото сде

Русский

2013-07-06

53 KB

0 чел.

 

Кнопки

Для создания кнопки приложение должно создать дочернее окно на базе предопределенного класса "button". После этого родительское окно будет получать от кнопки сообщение с кодом WM_COMMAND. Этим сообщением кнопка информирует родительское окно о том, что с ней что-то сделали, например, нажали.

Создание кнопки

Для создания кнопки вам надо вызвать функцию CreateWindow.

Для создания кнопки с надписью "Help" в точке с координатами (10, 30) и размерами (40, 20) можно использовать, например, такой вызов функции CreateWindow:

hHelpButton = CreateWindow("button", "Help",

 WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,

 10, 30,

 40, 20,

 hWnd,

 (HMENU)IDB_Help,

 hInstance, NULL);

Стиль кнопки влияет на ее внешний вид и поведение:

Стиль кнопки

Внешний вид

Описание

BS_3STATE

Переключатель, который может находится в одном из трех состояний: включенном (квадратик перечеркнут), выключенном (квадратик не перечеркнут), неактивном (квадратик отображается серым цветом)

BS_AUTO3STATE

Аналогично стилю BS_3STATE, но внешний вид кнопки изменяется автоматически при ее переключении

BS_AUTOCHECKBOX

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

BS_AUTORADIOBUTTON

Переключатель, который может находиться в одном из двух состояний: включенном (внутри окружности имеется жирная черная точка) или выключенном (окружность не закрашена). Внешний вид кнопки изменяется автоматически при ее переключении

BS_CHECKBOX

Переключатель, который может находиться в одном из двух состояний: включенном или выключенном.

BS_DEFPUSHBUTTON

Стандартная кнопка с толстой рамкой вокруг

BS_GROUPBOX

Прямоугольная область, внутри которой могут находиться другие кнопки. Обычно используется в диалоговых панелях. Этот орган управления не воспринимает сообщения от мыши или клавиатуры

BS_LEFTTEXT

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

BS_OWNERDRAW

Внешний вид определяется родительским окном

Внешний вид кнопки определяется родительским окном, которое само рисует кнопку во включенном, выключенном или неактивном состоянии

BS_PUSHBUTTON

Стандартная кнопка без рамки

BS_RADIOBUTTON

Переключатель, который может находиться в одном из двух состояний: включенном или выключенном.

Сообщение WM_COMMAND

Сообщение с кодом WM_COMMAND передается функции родительского окна от органа управления, созданного этим окном. При создании органа управления (например, кнопки на базе класса "button") вы вызываете функцию CreateWindow, которой указываете идентификатор родительского окна и идентификатор органа управления.

Если орган управления изменяет свое состояние (например, когда вы нажали на кнопку), функция родительского окна получает сообщение WM_COMMAND. Вместе с этим сообщением функция родительского окна получает в параметре wParam идентификатор органа управления. Младшее слово параметра lParam содержит идентификатор дочернего окна, т. е. идентификатор окна органа управления. Старшее слово содержит код извещения от органа управления (notification code), по которому можно судить о том, какое действие было выполнено над органом управления.

Когда вы нажимаете на кнопку, родительское окно получает сообщение WM_COMMAND с кодом извещения, равным BN_CLICKED. Получив такое сообщение, приложение определяет, что была нажата кнопка, идентификатор которой находится в параметре wParam.

Управление кнопкой из приложения

Вызов функций управления окном

Для перемещения органа управления внутри окна можно воспользоваться функцией MoveWindow. Функция MoveWindow определяет новое расположение и размеры окна:

BOOL WINAPI MoveWindow(HWND hwnd, int nLeft, int nTop, int nWidth, int nHeight, BOOL fRepaint);

Для перемещения органа управления вам необходимо указать его идентификатор, полученный от функции CreateWindow. Параметр nLeft указывает новую координату левой границы окна, параметр nTop - новую координату нижней границы окна. Эти параметры определяют новое положение органа управления в системе координат, связанной с родительским окном. Параметры nWidth и nHeight определяют, соответственно, ширину и высоту окна. Последний параметр fRepaint представляет собой флаг, определяющий, надо ли перерисовывать окно после его перемещения. При перемещении органа управления в качестве этого параметра следует указать TRUE.

Для блокирования и разблокирования органа управления следует пользоваться функцией EnableWindow:

BOOL WINAPI EnableWindow(HWND hwnd, BOOL fEnable);

Функция EnableWindow позволяет разрешать или запрещать поступление сообщений от клавиатуры или мыши в окно или орган управления, идентификатор которого задан параметром hwnd. Для того чтобы заблокировать окно (или орган управления) необходимо для параметра fEnable указать значение FALSE. Если надо разблокировать окно, используйте значение TRUE.

В любой момент времени приложение может определить, является ли окно или орган управления заблокированным или нет. Для этого следует использовать функцию IsWindowEnabled:

BOOL WINAPI IsWindowEnabled(HWND hwnd);

Можно вообще убрать орган управления из окна, скрыв его при помощи функции ShowWindow:

BOOL ShowWindow(HWND hwnd, int nCmdShow);

Если использовать эту функцию для органа управления, вы можете его скрыть, указав в параметре nCmdShow значение SW_HIDE. Для восстановления органа управления надо вызвать эту функцию с параметром SW_SHOWNORMAL.

Можно изменить текст, написанный на кнопке. Для этого следует использовать функцию SetWindowText:

void WINAPI SetWindowText(HWND hwnd, LPCSTR lpszString);

Функция DestroyWindow уничтожает окно, идентификатор которого задан в качестве параметра hWnd, и освобождает все связанные с ним ресурсы.

BOOL WINAPI DestroyWindow(HWND hnd);

Передача сообщений органу управления

Существует два способа передачи сообщений.

Первый способ - запись сообщения в очередь приложения. Он основан на использовании функции PostMessage:

BOOL WINAPI PostMessage(HWND hWnd, UINT uMsg,   WPARAM wParam, LPARAM lParam);

Параметр uMsg задает идентификатор передаваемого сообщения. Параметры wParam и lParam используются для передачи параметров сообщения.

Второй способ - непосредственная передача сообщения функции окна минуя очередь сообщений. Этот способ реализуется функцией SendMessage:

LRESULT WINAPI SendMessage(HWND hWnd, UINT uMsg,  WPARAM wParam, LPARAM lParam);

Сообщения для кнопки

Для управления кнопкой вы можете использовать сообщение BM_SETSTATE, которое позволяет установить кнопку в нажатое или отжатое состояние.

Для установки кнопки в нажатое состояние следует передать ей сообщение BM_SETSTATE с параметром wParam, равным TRUE, и lParam, равным 0:

SendMessage(hButton, BM_SETSTATE, TRUE, 0L);

Для возврата кнопки в исходное состояние передайте ей то же самое сообщение, но с параметром wParam, равным FALSE:

SendMessage(hButton, BM_SETSTATE, FALSE, 0L);


Кнопка

Кнопка

Кнопка

Кнопка

Кнопка

Кнопка

Кнопка

Кнопка

Кнопка

Кнопка


 

А также другие работы, которые могут Вас заинтересовать

29031. Определение размеров подошвы центрально нагруженных фундаментов мелкого заложения 63.5 KB
  Реактивное давление грунта по подошве жёсткого центрально нагруженного фундамента принимается равномерно распределённым интенсивностью: 1 где NoII расчётная вертикальная нагрузка на уровне обреза фундамента; GfII и GgII расчётные значения веса фундамента и грунта на его уступах см.1; А площадь подошвы фундамента. Площадь подошвы фундамента при его расчёте по второму предельному состоянию по деформациям определяется из условия: pII ≤ R 2 где R расчётное сопротивление грунта основания. Поскольку обе части неравенства 2...
29032. Определение размеров подошвы внецентренно нагруженных фундаментов мелкого заложения. Эпюры давлений под подошвой фундамента. Порядок расчёта 33 KB
  Эпюры давлений под подошвой фундамента. При расчёте давление по подошве внецентренно нагруженного фундамента принимают изменяющимся по линейному закону а его краевые значения при действии момента сил относительно одной из главных осей определяют как для случая внецентренного сжатия по формуле: 1 Подстановкой значений А=l·b W=b2l 6 и M=NII·e формула 1 приводится к виду 2 2 где NII суммарная вертикальная нагрузка на основание включая вес фундамента и грунта на его уступах; A площадь подошвы фундамента; е эксцентриситет...
29033. Гидроизоляция фундаментов. Защита подвальных помещений от сырости и подтопления подземными водами 42 KB
  Гидроизоляция фундаментов. Гидроизоляция предназначается для обеспечения водонепроницаемости сооружений антифильтрационная гидроизоляция а также защиты от коррозии и разрушения материалов фундаментов и подземных конструкций от агрессивных подземных вод антикоррозионная гидроизоляция. Гидроизоляция от сырости и грунтовых вод подвальных и заглубленных помещений является значительно более сложной выбор такой гидроизоляции зависит от гидрогеологических условий строительной площадки уровня подземных вод их агрессивности особенностей...
29034. Расчёт фундаментов по второй группе предельных состояний. Определение конечной осадки фундаментов мелкого заложения методом послойного суммирования 34 KB
  Расчёт оснований фундаментов по второй группе предельных состояний по деформациям производится исходя из условия: s ≤ su 1 где s конечная стабилизированная осадка фундамента определённая расчётом; su предельное значение осадки устанавливаемое соответствующими нормативными документами или требованиями проекта. После определения размеров подошвы фундамента и проверки условия pII ≤ R где рII среднее давление на основание по подошве фундамента a R расчётное сопротивление грунта ось фундамента совмещают с литологической колонкой...
29035. Расчёт фундаментов по второй группе предельных состояний. Определение конечной осадки фундаментов мелкого заложения методом эквивалентного слоя 31.5 KB
  Расчёт фундаментов по второй группе предельных состояний по деформациям заключается в выполнении условия s ≤ sw 1 где s конечная стабилизированная осадка фундамента определённая расчётом; sw предельное значение осадки устанавливаемое соответствующими нормативными документами или требованиями проекта. Конечная стабилизированная осадка фундамента может быть определена методом эквивалентного слоя. Осадка с учётом жёсткости и формы подошвы фундамента в случае однородного основания определяется по формуле: s=p0hэmv 2 где p0 ...
29036. Определение расчётного сопротивления грунтов основания по таблицам СНиП 23 KB
  Тип песчаного грунта пески гравелистые крупные средней крупности и т. Плотность сложения песчаного грунта плотный средней плотности рыхлый. Устанавливается по таблице в зависимости от типа песчаного грунта и его коэффициента пористости: 1 где γ – удельный вес грунта; γs – удельный вес твердых частиц; w – влажность грунта. Степень влажности песчаного грунта Sr маловлажный влажный насыщенный водой: 2 где γs – удельный вес воды.
29037. Условия применения свайных фундаментов. Конструктивные решения. Виды свайных фундаментов в зависимости от расположения свай в плане 32 KB
  Условия применения свайных фундаментов. Виды свайных фундаментов в зависимости от расположения свай в плане. В этих условиях чаще всего прибегают к устройству фундаментов из свай. Группы или ряды свай объединённые поверху распределительной плитой или балкой образуют свайный фундамент.
29038. Условия применения свайных фундаментов. Классификация свай по материалу, форме продольного и поперечного сечения 42.5 KB
  Сваи погружаемые в грунт в готовом виде в зависимости от материала из которого они изготовляются подразделяются на железобетонные деревянные стальные и комбинированные. Железобетонные сваи получившие наибольшее распространение в практике строительства подразделяются: по форме поперечного сечения на квадратные квадратные с круглой полостью полые круглого сечения прямоугольные тавровые и двутавровые рис.1; по форме продольного сечения на призматические цилиндрические с наклонными боковыми гранями пирамидальные...
29039. Понятие о висячих сваях и сваях-стойках. Определение несущей способности свай-стоек 28.5 KB
  По характеру передачи нагрузки на грунт сваи подразделяются на висячие сваи и сваистойки. К сваямстойкам относятся сваи прорезающие толщу слабых грунтов и опирающиеся на практически несжимаемые скальные или малосжимаемые грунты крупнообломочные грунты с песчаным заполнителем глины твёрдой консистенции. Сваястойка практически всю нагрузку на грунт передаёт через нижний конец так как при малых вертикальных перемещениях сваи не возникают условия для проявления сил трения на её боковой поверхности рис. Сваястойка работает как сжатый...