#include <windows.h>
#include "resource.h"//Ниже пустая строка обязательна
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
/* дескриптор приложения */
HINSTANCE hInstance;
/* кнопка */
HWND BtHwnd;
HWND BtHwnd1;
/* редактор */
HWND EdtHwnd;
HWND EdtHwnd1;
char szWinName[] = "MyWin"; /* имя класса окна */
/* главная функция */
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,
LPSTR lpszArgs, int nWinMode)
{
HWND hwnd;
MSG msg;
MSG msg1;
WNDCLASSEX wcl;
/* определение класса окна */
wcl.hInstance = hThisInst; /* дескриптор данного экземпляра */
wcl.lpszClassName = szWinName; /* имя класса окна */
wcl.lpfnWndProc = WindowFunc; /* функция окна */
wcl.style = 0; /* стиль по умолчанию */
wcl.cbSize = sizeof(WNDCLASSEX); /*размер структуры */
/* WNDCLASSEX */
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);/* большая */
/* пикторграмма */
wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO); /* малая */
/* пиктограмма */
wcl.hCursor = LoadCursor(NULL, IDC_ARROW); /* форма курсора */
wcl.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); /* меню не используется */
wcl.cbClsExtra = 0; /* дополнительная информация отсутствует */
wcl.cbWndExtra = 0;
/* фон окна задается белым */
wcl.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH);
/* регистрация класса окна */
if (!RegisterClassEx(&wcl)) return 0;
/* Создание окна */
hwnd = CreateWindow(
szWinName, /* имя класса окна */
"Window Lab_2", /* заголовок */
WS_SYSMENU, /* стандартное окно */
CW_USEDEFAULT, /* координата Х - определяется Windows */
CW_USEDEFAULT, /* координата Y - определяется Windows */
CW_USEDEFAULT, /* ширина - определяется Windows */
CW_USEDEFAULT, /* высота - определяется Windows */
HWND_DESKTOP, /* родительского окна нет */
NULL, /* меню уже описано в классе */
hThisInst, /* дескриптор данного экземпляра приложения */
NULL /* дополнительных аргументов нет */
);
/* запоминаем дескриптор приложения для создания дочерних элементов управления */
hInstance = hThisInst;
/* отображение окна */
ShowWindow(hwnd, nWinMode);
UpdateWindow(hwnd);
/* цикл сообщений */
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); /* разрешает
использование клавиатуры */
DispatchMessage(&msg); /* возвращает управление Windows */
}
return msg.wParam;
}
/* Эта функция вызывается Windows 95, которая передает ей */
/* сообщения из очереди сообщений */
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
char msg[10];
char msg1[10];
int r;
/* обработка сообщений */
switch (message) {
case WM_DESTROY: /* завершение программы */
PostQuitMessage(0);
break;
/* сообщение от пунктов меню и элементов управления */
case WM_COMMAND:
/* пункт меню - Start */
if (LOWORD(wParam) == IDM_START)
{
MessageBox(hwnd, "Timer started", "Generation started", MB_OK);
/* установка таймера */
SetTimer(hwnd, 1, 1000, NULL);
}
/* пункт меню - Stop */
if (LOWORD(wParam) == IDM_STOP)
{
MessageBox(hwnd, "Timer stoped", "Generation stopped", MB_OK);
/* завершение работы таймера */
KillTimer(hwnd, 1);
}
/* от кнопки*/
if (HWND(lParam) == BtHwnd)
{
lstrcpy(msg, "0");
/* помещение текста в поле ввода */
SendMessage(EdtHwnd, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)msg);
}
if (HWND(lParam) == BtHwnd1)
{
lstrcpy(msg, "0");
/* помещение текста в поле ввода */
SendMessage(EdtHwnd1, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)msg);
}
break;
/* сообщение от таймера*/
case WM_TIMER:
int k;
int b;
r = rand() % 20;
/* получение длины текста в поле ввода */
k = SendMessage(EdtHwnd, WM_GETTEXTLENGTH, 0, 0);
b = SendMessage(EdtHwnd1, WM_GETTEXTLENGTH, 0, 0);
/* получение текста из поля ввода */
SendMessage(EdtHwnd, WM_GETTEXT, k + 1, (LPARAM)msg);
SendMessage(EdtHwnd1, WM_GETTEXT, b + 1, (LPARAM)msg);
/* перевод значения из строки в число и суммирование*/
r += atoi(msg);
/* перевод из числа в строку*/
wsprintf(msg, "%d", r);
wsprintf(msg1, "%d", r * 2);
/* помещение текста в поле ввода */
SendMessage(EdtHwnd, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)msg);
SendMessage(EdtHwnd1, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)msg1);
break;
case WM_CREATE:
/* создание кнопки */
BtHwnd = CreateWindow(
"BUTTON", /* имя класса окна */
"Reset #1", /* заголовок */
WS_CHILD | WS_VISIBLE | WS_BORDER, /* стиль */
5, /* координаты и размеры */
10,
70,
40,
hwnd, /* дескриптор родительского окна */
NULL, /* меню нет */
hInstance, /* дескриптор приложения*/
NULL
);
BtHwnd1 = CreateWindow(
"BUTTON", /* имя класса окна */
"Reset #2", /* заголовок */
WS_CHILD | WS_VISIBLE | WS_BORDER, /* стиль */
5, /* координаты и размеры */
55,
70,
40,
hwnd, /* дескриптор родительского окна */
NULL, /* меню нет */
hInstance, /* дескриптор приложения*/
NULL
);
/* создание (поля ввода) редактора */
EdtHwnd = CreateWindow(
"EDIT", /* имя класса окна */
"0", /* заголовок */
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_THICKFRAME/*стиль*/,
80, /* координаты и размеры */
10,
70,
40,
hwnd, /* дескриптор родительского окна */
NULL, /* меню нет*/
hInstance, /* дескриптор приложения */
NULL
);
EdtHwnd1 = CreateWindow(
"EDIT", /* имя класса окна */
"0", /* заголовок */
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_THICKFRAME/*стиль*/,
80, /* координаты и размеры */
55,
70,
40,
hwnd, /* дескриптор родительского окна */
NULL, /* меню нет*/
hInstance, /* дескриптор приложения */
NULL
);
default:
/* позволяет Windows обрабатывать любые сообщения
неуказанные в предыдущем случае */
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}