Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Извлечение данных из диалога

Извлечение данных ( ввод данных ) осуществляется из редактируемых полей с помощью функции

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 );