Файл: Методические указания по выполнению лабораторных работ Практикум Рекомендовано методической комиссией факультета вмк для студентов ннгу, обучающихся по специальности.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 95
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
hInstance, NULL);
// Главное окно создавалось невидимым, отображаем его
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
В функции окна WndProc создаем необходимые переменные:
char chText[70];// массив символов для хранения строки
WORD cbCount=0;// число символов в строке
Изменяем обработчик сообщения WM_COMMAND:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Разобрать выбор от элементов управления (меню, кнопка, edit):
switch (wmId)
{
case ID_Button: // Сообщение от кнопки
// Получаем от редактора текста содержимое.
// Функция возвращает количество прочитанных байт.
cbCount = SendMessageA(hEdit, EM_GETLINE, 0, (LPARAM)(LPSTR)chText);
// Строка должна оканчиваться двоичным нулем
chText[cbCount] = '\0';
//Изменяем заголовок главного окна
// Ко второму параметру применяем явное преобразование типа
SetWindowText(hWnd,(LPSTR)chText );
break;
// Сообщения от меню
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
Задание
-
Добавить еще один элемент редактирования и отображать в нем старый заголовок окна. -
Указание: перед сменой заголовка окна сохранять старый заголовок и посылать его второму элементу редактирования.
2.7Чтение из файла
В этом приложении используются два элемента управления – кнопка и статический текст. Данные хранятся в текстовом файле и представляют собой два целых числа. После прочтения чисел из файла на экран выводится сумма этих чисел.
Для выбора файла данных используется стандартное диалоговое окно.
Рис. 7 Потоки информации в л/р №7
Порядок работы
Для того чтобы использовать стандартный диалог, нужно подключить файл заголовков
#include
Для того чтобы использовать функции работы с файлами, нужно подключить файл заголовков
#include
Определим идентификатор кнопки «загрузить»:
#define IDB_Load 1
В функцию InitInstance(HINSTANCE hInstance, int nCmdShow) добавим создание дочерних окон – кнопки и статического текста.
hButton = CreateWindow("button", "загрузить" , WS_CHILD|WS_VISIBLE| BS_PUSHBUTTON, 10, 10, 100, 20, hWnd, (HMENU)IDB_Load, hInstance, NULL);
hStatic = CreateWindow("Static", "0+0=0" , WS_CHILD|WS_VISIBLE| SS_CENTER, 10, 40, 100, 20, hWnd, NULL, hInstance, NULL);
Изменения в оконной процедуре
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
char file_name[100]="";// имя файла
OPENFILENAME ofn;// структура, описывающая вид диалога
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Разобрать выбор в меню:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
case IDB_Load:
memset(&ofn, 0, sizeof(OPENFILENAME));// заполнить нулями структуру ofn
//заполним только основные поля
ofn.lStructSize=sizeof (OPENFILENAME);// размер структуры
ofn.Flags=OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY;// внешний вид
ofn.hwndOwner=hWnd;// идентификатор окна, создавшего диалоговое окно
ofn.lpstrDefExt="txt";
ofn.lpstrFile= file_name;// адрес строки,где будет содержаться имя выбранного файла, самое нужное поле
ofn.lpstrFilter="Text Files\0*.txt;Any Files\0*.*\0\0";
ofn.lpstrInitialDir="C:\\";// с какой папки начать просмотр
ofn.lpstrTitle="Загрузить данные из файла:";//заголовок диалога
ofn.nFilterIndex=1;
ofn.nMaxFile=50;// размер буфера для записи пути к файлу
if (GetOpenFileNameA(&ofn))// вызвать стандартный диалог
// если работа с диалогом завершилась успешно
{ FILE* f=fopen(ofn.lpstrFile,"r");
int nA,nB;
char str[10];
fscanf(f,"%d %d",&nA,&nB);
sprintf(str,"%d+%d=%d",nA,nB,nA+nB);
SetWindowText( hStatic, str); // выведем информацию в окно
}
// если была нажата кнопка «Отмена»
else MessageBoxA(hWnd, "не выбран файл"," Сообщение " , MB_OK);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: добавьте любой код отрисовки...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Список литературы
-
Шилдт Г. Программирование на С и С++ для Windows 95, 1996. -
Рихтер Дж. Windows для профессионалов. 4-е издание. – М.: Русская редакция Microsoft Press, 2004. -
Румянцев П. В. Азбука программирования в Win32 API. – М.: Горячая Линия – Телеком, 2004. -
Румянцев П. В. Работа с файлами в Win32 API. – М.: Горячая Линия – Телеком, 2002. -
Верма Р. Справочник по функциям Win32 API. – М.: Горячая линия – Телеком, 2002. -
Фролов А., Фролов Г. Операционная система Windows 95 для программиста -
http://www.frolov-lib.ru/books/bsp.old/v22/index.html -
http://msdn.microsoft.com/ -
http://www.firststeps.ru/mfc/winapi/win/apiwind1.html
Елена Александровна Кумагина
Программирование под Windows
Методические указания по выполнению лабораторных работ
Практикум
Государственное образовательное учреждение высшего
профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского».
603950, Нижний Новгород, пр. Гагарина, 23.