Приступая к работе с 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);
}
Вы не используете 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
Других решений пока нет …