Задать вопрос
@Brew

Почему возникают такие ошибки?

Код
#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;
}


Ошибки
Картинка
62bccb9599164897118598.png


Дали код для программы, создаю приложение, вставляю - получаю кучу ошибок
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
Если вы собираете приложение с кодировкой Unicode, то используйте тип wchar_t вместо char, либо делайте перекодировку из char* в wchar_t*
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы