69992

ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ

Лабораторная работа

Информатика, кибернетика и программирование

Цель: Ознакомление с концепцией дочерних окон операционной системы Windows, особенностями работы с предопределенными дочерними окнами, получение практических навыков по созданию и организации программного взаимодействия между главным окном программы и дочерними окнами.

Русский

2014-10-13

78 KB

2 чел.

Министерство образования и науки Украины

Харьковский Национальный Университет Радиоэлектроники

Кафедра ЭВМ

Лабораторная работа №4

Тема: «ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ»

Выполнил:                                                                      Проверил:

ст. гр. КИ-08-4                                                                Бугрий А. Н.

Кравец Артём Валерьевич

2009

Лабораторная работа №4

Тема: «ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ»

Цель: Ознакомление с концепцией дочерних окон операционной системы Windows, особенностями работы с предопределенными дочерними окнами, получение практических навыков по созданию и организации программного взаимодействия между главным окном программы и дочерними окнами.

Задание:

Вариант 6

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

Листинг:

#include <windows.h>

#define ID_FIRSTCHILD 100

#define ID_SECONDCHILD 101

#define ID_THIRDCHILD 102

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

HINSTANCE hInst;  // Указатель приложения

LPCTSTR szWindowClass = "Kravets";

LPCTSTR szTitle = "Рисовалка";

// Предварительное описание функций 

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// Основная программа 

int APIENTRY WinMain(HINSTANCE hInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR     lpCmdLine,

                    int       nCmdShow)

{

MSG msg;

// Регистрация класса окна 

MyRegisterClass(hInstance);

// Создание окна приложения

if (!InitInstance (hInstance, nCmdShow))

{

 return FALSE;

}

// Цикл обработки сообщений

while (GetMessage(&msg, NULL, 0, 0))

{

  TranslateMessage(&msg);

  DispatchMessage(&msg);

}

return msg.wParam;

}

//Регистрация класса

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize         = sizeof(WNDCLASSEX);

wcex.style   = CS_HREDRAW | CS_VREDRAW ; // стиль окна

wcex.lpfnWndProc = (WNDPROC)WndProc; // оконная процедура

wcex.cbClsExtra  = 0;      

wcex.cbWndExtra  = 0;

wcex.hInstance  = hInstance;  // указатель приложения

wcex.hIcon   = LoadIcon(NULL, IDI_APPLICATION);  // опре-деление иконки

wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);    // опреде-ление курсора

wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   // ус-тановка фона

wcex.lpszMenuName = NULL;  // определение меню

wcex.lpszClassName = szWindowClass; // имя класса

wcex.hIconSm  = NULL;

return RegisterClassEx(&wcex); // регистрация класса окна

}

//Создание окна приложения

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

  HWND hWnd;

  hInst = hInstance; // сохраняет указатель приложения в переменной hInst

  hWnd=CreateWindow(szWindowClass, // имя класса окна

  szTitle,   // имя приложения

  WS_OVERLAPPEDWINDOW |  WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, // стиль окна

  CW_USEDEFAULT, // положение по Х

  CW_USEDEFAULT,  // положение по Y

  CW_USEDEFAULT,    // размер по Х

  CW_USEDEFAULT,    // размер по Y

  NULL, // описатель родительского окна

  NULL,       // описатель меню окна

  hInstance,  // указатель приложения

  NULL);     // параметры создания.

  if (!hWnd) // Если окно не создалось, функция возвращает FALSE

  {

     return FALSE;

  }

  ShowWindow(hWnd, nCmdShow);  // Показать окно

  UpdateWindow(hWnd);   // Обновить окно

  return TRUE;    //Успешное завершение функции

}

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

RECT rt;

int i=0;

static int x1, x2, y1, y2, temp = 4;

static POINT mas[10000];

 

HWND hb1, hb2, hb3;

HINSTANCE hInstance;

switch (message)

{

 case WM_CREATE:

  

  hb1 = CreateWindow("button",

  "Линия",

  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,

  30,

  40,  

  70,    

  30,    

  hWnd,

  (HMENU) (int) (ID_FIRSTCHILD),    

  hInstance,  

  NULL);

  hb2 = CreateWindow("button",

  "Прямоуг.",

  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,

  30,

  73,

  70,

  30,

  hWnd,

  (HMENU) (int) (ID_SECONDCHILD),

  hInstance,

  NULL);

   hb3 = CreateWindow("button",

  "Эллипс",

  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,

  30,

  106,

  70,

  30,

  hWnd,

   (HMENU) (int) (ID_THIRDCHILD),

  hInstance,

  NULL);

     break;

 case WM_LBUTTONDOWN:

  x1 = LOWORD(lParam);

  y1 = HIWORD(lParam);

  mas[i].x = x1;

             mas[i].y = y1;

  break;

 case WM_MOUSEMOVE:

  if(wParam & MK_LBUTTON)

  {

   x2 = LOWORD(lParam);

   y2 = HIWORD(lParam);

    mas[i+1].x = x2;

    mas[i+1].y = y2;

    i++;

   InvalidateRect (hWnd, NULL, TRUE) ;

  }

  break;

 case WM_RBUTTONDOWN:

  temp = 3;

  break;

 case WM_COMMAND:

  if(LOWORD(wParam) == ID_FIRSTCHILD)

  temp = 2;

  if(LOWORD(wParam) == ID_SECONDCHILD)

   temp = 0;

  if(LOWORD(wParam) == ID_THIRDCHILD)

   temp = 1;

   break;

 case WM_PAINT:

  hdc = BeginPaint(hWnd, &ps);

   

                                    if(temp == 0)

  {

  GetClientRect(hWnd, &rt); // Область окна для рисования

  Rectangle(hdc, x1, y1, x2, y2);

  EndPaint(hWnd, &ps);// Закончить графический вывод

  }

  if(temp == 1)

  {

  GetClientRect(hWnd, &rt); // Область окна для рисования

  Ellipse(hdc, x1, y1, x2, y2);

  EndPaint(hWnd, &ps);// Закончить графический вывод

  }

  if(temp == 2)

  {

  GetClientRect(hWnd, &rt); // Область окна для рисования

  MoveToEx(hdc, x1, y1, NULL);

  LineTo(hdc, x2, y2);

  EndPaint(hWnd, &ps);// Закончить графический вывод

  }

  if(temp == 3)

  {

   hdc = BeginPaint(hWnd, &ps);

               MoveToEx(hdc,mas[0].x,mas[0].y,NULL);

               for (int j=0; j < i; ++j)

               LineTo(hdc, mas[j].x, mas[j].y);

   EndPaint(hWnd, &ps);

  }

  break;

 case WM_DESTROY:

   PostQuitMessage(0);

   break;

 default:

  return DefWindowProc(hWnd, message, wParam, lParam);

  }

return 0;

}

Результат:

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


 

А также другие работы, которые могут Вас заинтересовать

37668. Проектирование архитектуры ПО 54 KB
  Киев 2010 Проектирование архитектуры ПО Цель: исследование диаграмм компонентов и развертывание обретение навыков в их использовании. Диаграмма компонентов Архитектура ПО это представление ПО с помощью базовых элементов трех типов: компонентов соединителей и данных. Диаграмма компонентов Component digrm описывает физическое представление системы и обеспечивает переход от логического представления к реализации проекта в форме программного кода. Стереотипы компонентов такие: база данных DB; модуль который выполняется .
37670. Дослідження процеса поздовжнього прокатування 180.25 KB
  Теоретичні відомості Сутність усіх видів прокатування полягає в пластичному деформуванні заготовки нагрітої або холодної між валками. Прокатний валок У процесі прокатування валки знаходяться в дуже важких умовах під дією значних зусиль з проковзуванням металу заготовки по контактній поверхні валків в умовах значної зміни температур їх робочих поверхонь. Заготовка 1 втягується у зазор між обертовими валками 2 силою тертя Т і деформується на невеликій ділянці яка переміщується по прокатуваному металу під час руху заготовки у напрямку...
37671. Уравнения гиперболического типа 21 KB
  Простейшие задачи, приводящиеся к уравнению гиперболического типа. Уравнение колебаний неограниченной струны. Постановка краевых задач для уравнений описывающих колебательный процесс. Теорема единственности. Теорема устойчивости.
37672. Исследование напряженно-деформированного состояния стержня при поперечном изгибе 620.5 KB
  Изучить навыки работы в пакете инженерно-прикладных программ ANSYS 5.7/ED. Исследовать напряженно-деформированное состояние стержня при поперечном изгибе. Построить эпюры внутренних силовых факторов.
37673. АТОМНІ ЕЛЕКТРИЧНІ СТАНЦІЇ 32.5 KB
  АТОМНІ ЕЛЕКТРИЧНІ СТАНЦІЇ Особливості експлуатації АЕС обумовлені специфікою їх технологічної схеми. Однією з особливостей сучасних паротурбінних АЕС є їх робота на насиченому та слабо перегрітому парі з порівняно невисокими тисками пари перед турбіною 65 МПа. На сучасних АЕС застосовуються двоконтурні з реакторами води під тиском ВВЕР та одноконтурні з ―киплячими реакторами РБМК теплові схеми. В теплових схемах АЕС відсутні пароохолодники в регенеративних підігрівниках.
37675. ИЗУЧЕНИЕ ПРИНЦИПА ДЕЙСТВИЯ И ХАРАКТЕРИСТИК ЭЛЕКТРОННЫХ ЛАМП 48.5 KB
  Важнейшей характеристикой диода является зависимость силы тока текущего через лампу анодного тока от разности потенциалов между катодом и анодом анодного напряжения. Анодный ток зависит от анодного напряжения и от температуры катода. При постоянной температуре катода анодный ток 1д возрастает с увеличением анодного напряжения IIа. Поскольку ме ханизм возникновения электрического тока в этом случае отличается от механизма возникновения тока в проводниках то зависимость анодного тока от анодного напряжения не описывается законом Ома.
37676. Морфологія і анатомія генеративних органів 257.5 KB
  Морфологія і анатомія бруньок винограду. Вивчити типи бруньок винограду їх утворення розвиток морфологічну та анатомічну будову пасинкової бруньки і зимуючого вічка. Морфологія і анатомія бруньок винограду. У більшості сортів європейськоазіатського винограду порослеві пагони і вовчки безплідні і відрізняються від звичайних пагонів більшою силою росту в довжину і в товщину рихлістю будови тканини слабким прикріпленням до багаторічної частини стебла.