2016-08-19 2 views
0

Embarcadero XE-5を使い始める前に、オブジェクトモデルが混乱しました。 私のプロジェクトは、最初からキャンバスを含むので、私のこんにちは世界 は1行または2行を描くことです。 SDIプロジェクトをセットアップし、ファストコール をC++ビルダーのヘルプから直接取り出しましたが、コンパイルすることはできません。 Form1 がすべての例で使用されていますが、インスタンス化するための努力は ではありません。 Form1をさまざまな方法で宣言しようとしましたが、成功はありませんでした。Embarcadero C++ Builderでのフォームの宣言:

誰かが私のエラーを指摘できますか?

// ---------------------------------------------------- 
#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

あなたはTCanvasオブジェクトを作成するためにTApplication::CreateForm()を使用しないでください。 __classid(TForm1)代わりに__classid(TCanvas)を変更します。

もちろん
// ---------------------------------------------------- 
#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フォーム