Типы данных, используемые в Win32-приложениях

Мобильность программ и их независимость от конкретной платформы во многом обеспечивается введением новых стандартных типов данных - определенных на основе простых типов языка программирования Си. Имена стандартных типов данных состоят из символов верхнего регистра.

Ниже приведен список наиболее распространенных типов: симовольных, целых, булевских, указателей и описателей (handles). Символьные, целые и булевские типы соответствуют аналогичным типам большинства диалектов языка Си. Имена типов-указателей содержат префикс "P" или "LP". Описатели имеют отношение к ресурсам, загруженным в память.

Наиболее часто используются следующие типы данных:

· BOOL - булевская переменная ( TRUE или FALSE );

· CHAR - 8- разрядный символ;

· DWORD - 32-разрядное беззнаковое целое;

· HANDLE - описатель объекта;

· INT - 32-разрядное целое;

· LPSTR - указатель на строку 8-разрядных символов, заканчивающуюся нулем;

· LPTSTR - LPWSTR в случае Unicode или LPSTR в случае ANSI;

· LPVOID - указатель на любой тип;

· LPWSTR - указатель на строку 16-разрядных (Unicode) символов, заканчивающуюся нулем;

· WCHAR, в случае Unicode или CHAR в случае ANSI;

· WCHAR - 16-разрядный Unicode символ;

· WORD - 16-разрядное беззнаковое целое.

Остальные типы данных будут изучаться по мере необходимости.

Обработка ошибок

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

Вызываемая Win32-функция может возвратить значение, свидетельствующее об ошибке (например, NULL для функций типа HANDLE или ноль для функций типа BOOL). В таких случаях можно попытаться выявить тип ошибки при помощи функции GetLastError - она возвращает код последней ошибки, который хранится в локальной памяти потока, вызвавшего ошибку. Коды ошибок (а их более 10 тысяч), представляющие собой 32-битные числа, находятся в заголовочном файле WinError.h.

Если приложение содержит функции, к которым обращаются другие программы, то желательно, чтобы эти функции синтезировали код ошибки в случае возникновения ошибочных ситуаций, то есть вели себя подобно функциям Win32 API. Это можно сделать при помощи функции SetLastError.

Для преобразования кода ошибки в ее содержательное описание предназначена Win32-функция FormatMessage.

Прогон программы, синтезирующей информацию об ошибке, которая имитирует отсутствие нужного файла

//Практическая работа № 16

//Группа xxxxxx Терминал N ФИО

#include “windows.h”

#include “stdio.h”

void GetError() {

DWORD dw = GetLastError(); //Получение кода последней ошибки

printf("GetLastError returned %u\n", dw); //Печать кода последней ошибки

}

void SetError() {

DWORD dw = ERROR_FILE_NOT_FOUND;//Выбор кода ошибки

SetLastError (dw);//Установка кода ошибки

}

void main() {

printf("Hello world \n");

SetError();// Вызов установщика кода ошибки

GetError();// вызов Расшифровщика кода ошибки

}

/* При выполнении данной практической работы я освоил

.

*/

Рекомендуется реализовать данную программу и сверить номер выдаваемой ошибки с соответствующим перечнем в MSDN или файле заголовка WinError.h.

Заключение

В данной лекции рассмотрены вопросы, важные с точки зрения практического освоения ОС Windows и разработки Win32-приложений. Основным источником сведений об API системы является справочная система MSDN. Разработчику приложений необходимо владеть средствами разработки и отладки, знать основные типы данных и форматы хранения текстовых строк, а также правильно обрабатывать ошибки. Дополнительным источником сведений о системе являются разнообразные инструментальные средства.

Вопросы :

Типы данных, используемые в Win32-приложениях - student2.ru 1.Что такое Win32 API ?

(Win32 API предоставляет всеобъемлющий интерфейс, позволяющий выполнить каждое действие несколькими способами и покрывающий все области, с которыми должна работать операционная система.)

Наши рекомендации