// ----------------------------------------
// Работа с таблицей строк 
// ----------------------------------------

#define STRICT
#include <windows.h>
#include "string.hpp"

// Прототип функции обработки ошибки
void Error(void);

#pragma argsused
int PASCAL
WinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR     lpszCmdLine,
	int       nCmdShow)
{
  // Буфера для работы со строками
	BYTE szAppName[20];
	BYTE szWindowName[80];
	BYTE szMsg[80];
  BYTE szBuf[80];
  int  cb;

	// Загружаем строку с идентификатором IDS_APPNAME
	cb = LoadString(hInstance, IDS_APPNAME,
	  szAppName, sizeof(szAppName));

	// Если в буфер записано 0 символов,
	// это означает, что ресурс не найден.
	// В этом случае мы вызываем функцию обработки
	// ошибки и завершаем работу приложения 
	if(!cb)
	{
			Error(); return -1;
  }

	// Загружаем строку с идентификатором IDS_WINDOWNAME
	cb = LoadString(hInstance, IDS_WINDOWNAME,
	  szWindowName, sizeof(szWindowName));

	if(!cb)
	{
			Error(); return -1;
  }

	// Загружаем строку с идентификатором IDS_MESSAGE
	cb = LoadString(hInstance, IDS_MESSAGE,
	  szMsg, sizeof(szMsg));

	if(!cb)
	{
			Error(); return -1;
  }

  // Подготавливаем буфер для вывода сообщения
	wsprintf(szBuf, szMsg, (LPSTR)szAppName, 1994);

	// Выводим сообщение, составленное из строк
  // и числа 1994
	MessageBox(NULL, szBuf, szWindowName,
	  MB_OK | MB_ICONINFORMATION);

	return 0;
}

// --------------------------------------------
// Функция обработки ошибки загрузки ресурса
// --------------------------------------------
void Error(void)
{
	MessageBox(NULL, "Ошибка при загрузке ресурса",
	  "Error", MB_OK | MB_ICONSTOP);
}