Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод рекомендации АЯ 2 семестр2.docx
Скачиваний:
113
Добавлен:
23.03.2016
Размер:
1.14 Mб
Скачать

Пример выполнения работы

Для решения задачи в среде Microsoft Visual Studio 2013 было создано стандартное оконное приложение (проект типа Win32 Project, в русифицированной версии Проект Win32) с включенным свойством «Пустой проект» (Empty project). В проект добавлен файл с расширение .cpp, исходный код которого приведен в листинге ниже. В редакторе ресурсов создано диалоговое окно как ресурс, внешний вид диалогового окна представлен на рисунке 1. При создании ресурсов автоматически создаются файл resource.h и файл с расширение .rc, исходные тексты которых не приводятся. В этих файлах идентификатор диалогового окна – IDD_DIALOG1, идентификаторы текстовых полей – IDC_EDIT1, IDC_EDIT2, IDC_EDIT3, идентификаторы кнопок – IDC_BUTTON1, IDC_BUTTON2, IDC_BUTTON3, идентификатор списка – IDC_LIST1.

Листинг программы с комментариями:

#include <stdio.h>

#include <Windows.h>

#include "resource.h"

BOOL CALLBACK DialogFun(HWND hwnd, UINT message,

WPARAM wParam, LPARAM lParam)

{

char Text[64];

double x, y, z;

switch(message)

{

case WM_COMMAND:

switch(LOWORD(wParam))

{

case IDOK:

case IDCANCEL:

EndDialog(hwnd, LOWORD(wParam));

return TRUE;

case IDC_BUTTON1: // Обработка сообщения от кнопки +

case IDC_BUTTON2: // Обработка сообщения от кнопки -

SendDlgItemMessage(hwnd, IDC_EDIT1, WM_GETTEXT, 63, (LPARAM)Text); // Получить текст из текстового поля и записать в массив Text

if (sscanf_s(Text, "%lf", &x)<1)

{

MessageBox(hwnd, "Неверный формат первого операнда",

"Ошибка формата", MB_OK | MB_ICONHAND);

return TRUE;

}

SendDlgItemMessage(hwnd, IDC_EDIT2, WM_GETTEXT, 63, (LPARAM)Text); // Получить текст из текстового поля и записать в массив Text

if (sscanf_s(Text, "%lf", &y)<1)

{

MessageBox(hwnd, "Неверный формат второго операнда",

"Ошибка формата", MB_OK | MB_ICONHAND);

return TRUE;

}

char Znak;

if (LOWORD(wParam)==IDC_BUTTON1) { z=x+y; Znak='+'; }

if (LOWORD(wParam)==IDC_BUTTON2) { z=x-y; Znak='-'; }

sprintf(Text, "%f", z);

SendDlgItemMessage(hwnd, IDC_EDIT3, WM_SETTEXT, 0, (LPARAM)Text); // Помещаем текст из массива в текстовое поле

sprintf_s(Text, "%f %c %f = %f", x, Znak, y, z);

SendDlgItemMessage(hwnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)Text);

return TRUE;

case IDC_BUTTON3: // Обработка сообщения от кнопки "Очистить список"

SendDlgItemMessage(hwnd, IDC_LIST1, LB_RESETCONTENT, 0, 0);

return TRUE;

}

}

return FALSE;

}

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

// TODO: Place code here.

DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogFun);

return 0;

}

Следует отметить, что для запуска данной программы необходимо в окне свойств проекта отключить использование кодировки Unicode. Т.е. установить опцию «Набор символов» в состояние «Не задано», как показано на рисунке 2.

Рисунок 2 – Отключение набора символов Unicode