Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба8.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
982.02 Кб
Скачать

1.3.1. Инициализация структуры перед вызовом диалога открытия или сохранения файла

Перед тем как вызывать диалог соответствующей ему API - функцией необходимо инициализировать поля переменной, которая будет определять вид и поведение диалога. Для диалога открытия - сохранения файла обязательными для заполнения полями являются поле lStructSize - размер структуры, поле lpstrFile - необходимо, чтобы этот указатель указывал на память, выделенную для имени файла, кроме того, поле nMaxFile должно содержать максимальную длину имени файла, включая путь.

Пример инициализации:

// выделение памяти под строку для имени файла

filename=new char[100];

// инициализация строки

lstrcpy(filename,"");

// инициализация структуры (обнуление)

memset(&ofn, 0, sizeof(ofn));

ofn.lpstrFile=filename;

// максимальное количество символов в пути

ofn.nMaxFile=100;

// задаем размер структуры

ofn.lStructSize = sizeof(OPENFILENAME);

1.3.2. Вызов диалога открытия файла

Для вызова диалога открытия файла необходимо вызвать функцию GetOpenFileName, куда в качестве параметра передать адрес инициализированной переменной типа OPENFILENAME.

Функция GetOpenFileName:

BOOL GetOpenFileName( LPOPENFILENAME lpofn

// адрес структуры с инициализированными данными

);

lpofn - указатель на структуру OPENFILENAME, которая содержит данные для инициализации диалога.

Возвращает ненулевое значение, в случае успешного завершения, если пользователь нажал на кнопку OK, в противном случае (например, если пользователь просто закрыл диалоговое окно) возвращает ноль.

Пример вызова функции:

// вызываем диалог открытия файла

GetOpenFileName(&ofn);

1.3.3. Вызов диалога сохранения файла

Для вызова диалога сохранения файла необходимо вызвать функцию GetSaveFileName, куда в качестве параметра передать адрес инициализированной переменной типа OPENFILENAME. Параметры и возвращаемое значение аналогичны функции GetOpenFileName.

Результат вызова диалога открытия или сохранения, сохраняется в поле lpstrFile, указывает на буфер, содержащий имя файла выбранного в диалоге.

1.4. Стандартный диалог выбора цвета

Для того, чтобы вызвать стандартный диалог выбора цвета необходимо объявить переменную типа CHOOSECOLOR.

Пример объявления:

CHOOSECOLOR cl;

Структура CHOOSECOLOR.

typedef struct { // cc

DWORD lStructSize;

HWND hwndOwner;

HWND hInstance;

COLORREF rgbResult;

COLORREF* lpCustColors;

DWORD Flags;

LPARAM lCustData;

LPCCHOOKPROC lpfnHook;

LPCTSTR lpTemplateName;

} CHOOSECOLOR;

Опишем некоторые наиболее важные поля структуры:

lStructSize - размер структуры в байтах

hwndOwner - определяет окно, являющееся хозяином диалога

rgbResult - цвет, выбранный пользователем

lpCustColors - набор цветов, определенных пользователем

Flags - флаги, для инициализации стандартного диалога;

некоторые из флагов:

CC_ANYCOLOR - заставляет диалог отображать все возможные цвета

CC_FULLOPEN - заставляет диалог отображать дополнительный элементы, для того чтобы пользователь мог определить свои цвета

CC_PREVENTFULLOPEN - выключает кнопку "Определить цвет"

CC_RGBINIT - определяет цвет, определенный в rgbResult, как начальный выбранный цвет

CC_SHOWHELP - отображает кнопку помощи

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]