ALTE DOCUMENTE
|
||||||
В этом 12112r1724m разделе описываются селекторные кнопки radio buttons Windows поддерживает два типа селекторных кнопок - устанавливаемые вручную (ручные) и автом 12112r1724m атические. Ручные селекторные кнопки (как и ручные контрольные переключатели) требуют, чтобы все действия по управлению ими выполняла программа. Управление автом 12112r1724m атическими селекторными кнопками выполняет сама Windows. Поскольку управление селекторными кнопками более сложно, чем управление контрольными переключателями, и поскольку автом 12112r1724m атические селекторные кнопки используются наиболее часто, рассмотрим только этот тип селекторных кнопок.
Как и другие элементы управления, селекторные кнопки описываются в файле ресурсов при определении диалога. Для создания автом 12112r1724m атических селекторных кнопок используется оператор AUTORADIOBUTTON
AUTORADIOBUTTON "строка", ID X Y
Width Height
"строка" a ID X Y a Width Height Если этот параметр не указан, стиль устанавливается по умолчанию, то есть строка отображается справа от маленькой кнопки и пользователь может переключаться к селекторной кнопке с помощью клавиши [Tab
Как уже упоминалось, селекторные кнопки используются для представления группы опций, из которых можно выбрать только одну. Если в такой группе используются автом 12112r1724m атические селекторные кнопки, Windows управляет ими таким образом, чтобы в каждый момент времени была выбрана только одна из них. То есть, если пользователь выбирает одну из селекторных кнопок, ранее выбранная кнопка автом 12112r1724m атически очищается, и поэтом 12112r1724m у невозможно выбрать более одной селекторной кнопки одновременно.
Селекторная кнопка (в том 12112r1724m числе и автом 12112r1724m атическая) может быть установлена в нужное состояние программно, если направить ей сообщение BM SETCHECK API SendDlgItemMessage wParam при этом 12112r1724m определяет будущее состояние кнопки: если оно равно 1, то кнопка выбрана, если 0 - то нет. По умолчанию все кнопки изначально очищены.
SendDlgItemMessage Windows
BM GETCHECK. Если при этом 12112r1724m селекторная кнопка возвращает 1, она выбрана, а если 0 - нет.
Чтобы включить селекторные кнопки в пример программы, добавьте в файл ресурсов определения диалога следующие строки. Заметьте, что при этом 12112r1724m добавляется еще одна рамка группы для селекторных кнопок. Это, конечно, не обязательно, однако в диалогах Windows
GROUPBOX "Селекторы", ID GT 1, 53, 34
AUTORADIOBUTTON "Селектор 1", ID RB
AUTORADIOBUTTON "Селектор 2", ID RB
. Ниже приводится измененный текст программы предыдущего примера, в котором добавлен фрагмент работы с двумя селекторными кнопками. Поскольку эти кнопки автом 12112r1724m атические, изменений в программе немного. Заметьте, что состояние селекторных кнопок сохраняется во внешних переменных rstatus rstatus
#include <Windows.h>
include <String h>
#include <Stdio.h>
#include "Mydialog.h"
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DialogFunc(HWND,UINT,WPARAM,LPARAM);
char szWinName[]=" "; //
HINSTANCE hInst;
int cbstatus1=0; // Для хранения состояния
int cbstatus2=0; // контрольных переключателей
int rbstatus1=0; // Для хранения состояния
int rbstatus2=0; // селекторных кнопок
int WINAPI WinMain(HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
int nWinMode)
}
return msg.wParam;
}
// Windows и получает в качестве параметров сообщения
LRESULT CALLBACK WindowFunc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
break;
case WM_DESTROY: //
PostQuitMessage(0);
break;
default:
// Все сообщения, не обрабатываемые в данной
// функции, направляются на обработку по
// умолчанию
return DefWindowProc(hwnd,message,
wParam,lParam);
}
return 0;
}
BOOL CALLBACK DialogFunc(HWND hdwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
}
return
}
|