Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

system_prog_lab3

.docx
Скачиваний:
9
Добавлен:
01.03.2016
Размер:
38.52 Кб
Скачать

Мочоный В. О. КИ-133

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

ЭЛЕМЕНТЫ УПРАВЛЕНИЯ. ФАЙЛЫ РЕСУРСОВ.

3.1 Цель работы

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

3.2 Выполнение работы

3.2.1 Листинг программы

#include <windows.h>

#include <stdio.h>

#include <iostream>

#include "resource.h"

using namespace std;

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

BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow){

char class_name[] = "main_window";

char app_title[] = "Simple window";

WNDCLASS wc;

HWND hWnd;

MSG msg;

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

wc.lpszClassName = class_name;

wc.lpfnWndProc = &WndProc;

wc.style = CS_HREDRAW | CS_VREDRAW;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

wc.lpszMenuName = NULL;

RegisterClass(&wc);

hWnd = CreateWindow(

class_name,

app_title,

WS_OVERLAPPEDWINDOW,

20,

20,

500,

400,

NULL,

NULL,

hInstance,

NULL);

if (!hWnd){

MessageBox(NULL, "Create: error", app_title, MB_OK | MB_ICONSTOP);

return FALSE;

}

UINT id_button = 1;

HWND h_button = CreateWindow(

"button",

"Open Dialog",

WS_CHILD | WS_VISIBLE | BS_FLAT,

50, 50,

100, 30,

hWnd,

(HMENU)id_button,

hInstance,

NULL);

ShowWindow(hWnd, SW_SHOWNORMAL);

UpdateWindow(hWnd);

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

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

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

#define TIMER_ONE 1

char str[] = "Text";

switch (msg){

case WM_PAINT:

HDC hDC;

PAINTSTRUCT ps;

hDC = BeginPaint(hWnd, &ps);

TextOut(hDC, 20, 20, str, strlen(str));

EndPaint(hWnd, &ps);

break;

case WM_COMMAND: {

UINT id = LOWORD(wParam);

UINT code = HIWORD(wParam);

HWND h = (HWND)lParam;

if (id == 1 && code == BN_CLICKED)

{

int i_code = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc);

}

}

case WM_DESTROY:

KillTimer(hWnd, TIMER_ONE);

PostQuitMessage(0);

break;

default: return DefWindowProc(hWnd, msg, wParam, lParam);

}

return 0;

}

BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam,

LPARAM lParam){

switch (message){

case WM_INITDIALOG: {

return TRUE;

}

case WM_COMMAND: {

// Идентификатор элемента управления

int id = LOWORD(wParam);

int code = HIWORD(wParam); // Код уведомления

if (id == IDCANCEL){

// Нажаты или ESC, или пункт

// меню IDCANCEL, или кнопка IDCANCEL

EndDialog(hDlg, IDCANCEL);

return TRUE;

}

if (id == 1004 && code == BN_CLICKED) {

// Нажата кнопка ADD

int num = 1 + rand() % 100;

TCHAR arr[11];

wsprintf(arr, "Message %d", num);

HWND hWndList = GetDlgItem(hDlg, IDC_LIST1);

int pos = (int)SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)arr);

SendMessage(hWndList, LB_SETITEMDATA, pos, (LPARAM)0);

SetFocus(hWndList);

return TRUE;

}

if (id == 1005 && code == BN_CLICKED) {

// Нажата кнопка DEL

HWND hWndList = GetDlgItem(hDlg, IDC_LIST1);

int lbItem = (int)SendMessage(hWndList, LB_GETCURSEL, 0, 0);

SendMessage(hWndList, LB_DELETESTRING, lbItem, NULL);

//return TRUE;

}

if (id == 1006 && code == BN_CLICKED) {

HWND hWndList = GetDlgItem(hDlg, IDC_LIST1);

HWND hWndEdit = GetDlgItem(hDlg, IDC_EDIT1);

int posForEdit = (int)SendMessage(hWndList, LB_GETCURSEL, 0, 0);

SendMessage(hWndList, LB_DELETESTRING, posForEdit, NULL);

TCHAR arr[11], mess[11];

int count = (int)SendMessage(hWndEdit, EM_GETLINE, 0, (LPARAM)arr);

wsprintf(mess, " ");

memcpy(mess, arr, count);

SendMessage(hWndList, LB_INSERTSTRING, posForEdit, (LPARAM)mess);

SetFocus(hWndList);

return TRUE;

}

break;

};

case WM_CLOSE:{

PostMessage(hDlg, WM_COMMAND, IDCANCEL, 0);

return TRUE;

};

}

return FALSE;

}

3.2.2 Результаты работы программы

Результат работы программы изображен на рисунках 3.1 и 3.2.

Рисунок 3.1 – Результат работы программы

Рисунок 3.2 – Результат работы программы

Выводы

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

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