- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Извлечение данных из диалога
Извлечение данных ( ввод данных ) осуществляется из редактируемых полей с помощью функции
GetWindowText ( hControl, szString, iLen );
где
hControl – дескриптор элемента управления ( редактируемого поля );
szString – указатель на строку, в которую помещается текст;
iLen – длина вводимого текста.
Для получения дескриптора элемента управления используется функция
hControl = GetDlgItem ( hWnd, nId );
где
hWnd – дескриптор окна диалога;
nId – идентификатор органа управления.
Полученную символьную строку szString необходимо преобразовать к соответствующему типу данных функциями преобразования типа.
Например, преобразовать строку в целое число можно функцией atoi ( ) :
int a = atoi (szString ).
Ввод - вывод данных посредством передачи сообщений
Альтернативой в использовании функций SetDlgItemText ( ) и GetWindowText ( ) является ввод - вывод данных с помощью функции
SendDlgItemMessage ( HWND hDlg,
int ID,
UINT uMessage,
WPARAM wParam,
LPARAM lParam);
где
hDlg – дескриптор окна диалога;
iID – идентификатор органа управления;
uMessage – передаваемое сообщение;
wParam , lParam – параметры, соответствующие сообщению.
Например, для того чтобы вывести десятичное целое число 25 ( int a=25 ) в статическое поле с идентификатором ID_TEXT, расположенном в окне с дескриптором hDlg необходимо преобразовать число к символьному виду и поместить в символьный массив s:
sprintf (s, « %d », a );
а затем передать сообщение WM_SETTEXT:
SendDlgItemMessage ( hDlg, ID_TEXT, WM_SETTEXT, 0, long (s) );
Для считывания числа из редактируемого поля с идентификатором ID_EDIT необходимо передать сообщение WM_GETTEXT:
SendDlgItemMessage ( hDlg, ID_EDIT, WM_GETTEXT, 0, long (s));
а затем преобразовать символьную строку s к соответствующему типу данных, например,
int a = atoi (s) ;
Очевидно, что вместо функции SendDlgItemMessage( ) можно использовать сочетание функций SendMessage ( ) и GetDlgItem ( ), рассмотренное ранее.
Следует отметить, что для ввода - вывода данных можно пользоваться также и макросами Edit_SetText ( ) и Edit_GetText ( ), определенными в windowsx.h .
Функция CreateFile ( )
HANDLE CreateFile (
LPCTSTR lpFileName, // имя файла
DWORD dwDesiredAccess, // доступ чтение / запись
DWORD dwShereMode, // доступен для другого
// приложения
LPSECURITY_ATTRIBUTES lpSecurity, // безопасность
DWORD dwCreation, // перезапись
DWORD dwFlag, // скрытый, системный и т. д.
HANDLE hTemplateFile ); // файл с атрибутами копирование
Функция CreateFile() используется для открытия и закрытия файлов, для создания нового файла.
Первый параметр – указатель на символьную строку, содержащую имя файла.
Второй параметр может иметь следующие значения :
0 – запрашивает устройство без осуществления фактического доступа к нему;
GENERIC_READ – можно читать файл и перемещать указатель файла;
GENERIC_WRITE – можно записывать файл и перемещать его указатель;
Третий параметр может принимать одно из следующих значений:
0 – неразделяемый файл;
FILE_SHARE_READ – доступен другим приложениям для чтения;
FILE_SHARE_WRITE – доступен другим приложениям для записи.
Четвертому параметру в Windows 95 можно присваивать значение NULL. Этот параметр имеет смысл в Windows NT .
Пятый параметр может принимать следующие значения:
CREATE_NEW – вызывает отказ в случае, если файл существует;
CREATE_ALWAYS – перезаписывает существующий файл;
OPEN_EXISTING – отказ в случае, если файл не существует;
OPEN_ALWAYS – создает файл, если он не существует;
TRONCATE_EXISTING – файл усекается до 0 байт ( используется вместе со значением второго параметра GENERIC_WRITE ).
Шестой параметр dwFla :
FILE_ATTRIBUTE_ARCHIVE – архивный файл;
FILE_ATTRIBUTE_COMPRESSED – файл или каталог сжаты;
FILE_ATTRIBUTE_NORMAL – нет атрибутов;
FILE_ATTRIBUTE_HIDDEN – скрытый файл;
FILE_ATTRIBUTE_READONLY – файл только для чтения;
FILE_ATTRIBUTE_SYSTEM – используется только операционной системой.
Пример:
HANDLE CreateFile ( «NameFile .txt»,
GENERIC_READ | GENERIC_WRITE,
0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL );