Операционные системы ЗР

Страницы работы

Содержание работы

Лекция 6    Операционные системы ЗР

Использование стандартных системных окон

Окно Открытия файла:

Создадим диалоговую форму из двух полей и одной кнопки:

 


Выноска 2: IDC_OPEN

Код управляющего модуля:

Глобальные переменные:

HWND    hList1;

OPENFILENAME ofn;

Статические переменные в оконной процедуре диалога:

//список шаблонов для выделения файлов в окне диалога

static char szFilter[]="Text Files (*.TXT)\0*.txt\0"

                                                                       "ASCII Files (*.ASC)\0*.asc\0"

                                                                       "All Files (*.*)\0*.*\0\0";

//текстовые буфера для получения результата выбора файла

static char szFileName[_MAX_PATH];

 static char szTitleName[_MAX_FNAME+_MAX_EXT];

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

static CHARRANGE szSel;

switch (wMsg)

{

// Сообщение о инициализации диалогового окна

case WM_INITDIALOG:

//Инициализация структуры окна выбора файлов:

ofn.lStructSize=sizeof (OPENFILENAME);         //размер структуры

ofn.hwndOwner=hWnd;                   //дискриптор окна владельца

ofn.hInstance=NULL;                      //хендел потока родителя

ofn.lpstrFilter=szFilter;                   //строка допустимых фильтров выбора файлов

ofn.lpstrCustomFilter=NULL;         //строка с выбранным фильтром

ofn.nMaxCustFilter=0;                     //длина строки предыдущего поля

ofn.nFilterIndex=0;                          //индекс выбранной строки фильтра

ofn.lpstrFile=NULL;                        //строка с выбранным файлом и путем к нему

ofn.nMaxFile=_MAX_PATH;         //максимально допустимая длина предыдущей строки

ofn.lpstrFileTitle=NULL;                //строка с именем выбранного файла

ofn.nMaxFileTitle=_MAX_FNAME+MAX_EXT;  //макс.допустимая  длина пред. строки

ofn.lpstrInitialDir=NULL;               //имя каталога

ofn.lpstrTitle=NULL;                       //строка с заголовком диалогового окна

ofn.Flags=0;                                      //Флаги диалогового окна

ofn.nFileOffset=0;                            //Смещение имени файла в строке

ofn.nFileExtension=0;                      //Смещение расширения файла в строке

ofn.lpstrDefExt="txt";                    //расширение выбираемых файлов по-умолчанию

ofn.lCustData=0L;                           //данные для обработки

ofn.lpfnHook=NULL;                       //указатель для функции обработки (ФОВ)

ofn.lpTemplateName=NULL;         //имя шаблона диалогового окна

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

szSel.cpMin=0;          //позиция первого выделяемого символа в строке

szSel.cpMax=-1;       //выделить все символы

break;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Обработка нажатия клавиши вызова окна выбора файлов

// Сообщение от элементов диалогового окна

case WM_COMMAND:

switch (LOWORD (wParam))

{

//Нажатие на кнопку ОТКРЫТЬ ФАЙЛ

            case IDC_OPEN:

//указываем положение буферов для получения результатов

ofn.lpstrFile=szFileName;

                        ofn.lpstrFileTitle=szTitleName;

//отображать все файлы

                        ofn.Flags=OFN_HIDEREADONLY | OFN_CREATEPROMPT;

//открыть диалог по выбору файлов                                

                        GetOpenFileName(&ofn);

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

hList1= GetDlgItem (hWnd, PVIEW_COMPUTER);

//выделить в нем весь имеющийся текст

SendMessage(hList1,EM_EXSETSEL, 0, (LPARAM)&szSel);

//и заменить его выбранным файлом

                        SendMessage(hList1,EM_REPLACESEL,0,(LPARAM)szFileName);

//повторить эти операции для второго текстового поля

//в котором высвечивается только имя выбранного файла

hList1= GetDlgItem (hWnd,IDC_EDIT1);

                        SendMessage(hList1,EM_EXSETSEL, 0, (LPARAM)&szSel);

                        SendMessage(hList1,EM_REPLACESEL,0,(LPARAM)szTitleName);

            break;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

}


Окно Сохранения файла:

Выноска 2: IDC_SAVE

На дополнительную кнопку  ХХХ  вешаем следующий код (по сравнению с предыдущим он практически никак не отличается. Форма работает на той же структуре, что и предыдущий пример):

Похожие материалы

Информация о работе