Объявление формы в Embarcadero C ++ builder:

Приступая к работе с Embarcadero XE-5, объектная модель меня смутила.
Мой проект включает в себя холст с самого начала, так что мой привет мир
это нарисовать линию или две. Настройте проект SDI и добавьте быстрый вызов
непосредственно из справки C ++ Builder, но не может заставить его скомпилировать. Form1
используется во всех примерах, но мои попытки создать его не
за работой. Я пытался объявить Form1 различными способами, но безуспешно.

Кто-нибудь может указать на мою ошибку, пожалуйста?

// ----------------------------------------------------
#include <vcl.h>
#pragma hdrstop>
#include <tchar.h>
//-----------------------------------------------------
USEFORM("SDIMAIN.CPP", SDIAppForm);
USEFORM("ABOUT.CPP", AboutBox);
//-----------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
Application->Initialize();
Application->CreateForm(__classid(TSDIAppForm), &SDIAppForm);

// ** Following line gives error: Form1 undefined. **
Application->CreateForm(__classid(TCanvas), &Form1);
Application->CreateForm(__classid(TAboutBox), &AboutBox);
Application->Run();

return 0;
}
//------------------------------------------------------

/*  SDIMAIN - copied from the help screens  */
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->MoveTo(0,0);
Canvas->LineTo(ClientWidth, ClientHeight);
Canvas->MoveTo(0, ClientHeight);
Canvas->LineTo(ClientWidth, 0);
}

0

Решение

Вы не используете TApplication::CreateForm() создавать TCanvas объекты. + Изменить __classid(TCanvas) в __classid(TForm1) вместо:

// ----------------------------------------------------
#include <vcl.h>
#pragma hdrstop>
#include <tchar.h>
//-----------------------------------------------------
USEFORM("SDIMAIN.CPP", SDIAppForm);
USEFORM("Unit1.cpp", Form1);
USEFORM("ABOUT.CPP", AboutBox);
//-----------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
Application->Initialize();
Application->CreateForm(__classid(TSDIAppForm), &SDIAppForm);
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TAboutBox), &AboutBox);
Application->Run();
return 0;
}
//------------------------------------------------------

Конечно, это требует от вас TForm1 класс для начала:

Файл> Создать> Форма VCL

0

Другие решения

Других решений пока нет …