안녕하세요 , , ,
이전창 닫고 새창띄우기(;;) 작업 끝나고 .. 컴파일 중에 ;
이런 오류가 나버리네요 ... 어떻게 된건지 ...;;
소스는 이렇습니다 ;
-----------------------
unit 1
-----------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
protected
procedure WMMYShow(var M:TMessage);message WM_USER+4444;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// TApplication.Run 코드를 보시면 첨에 이렇게 설정해야 하는 이유가 나옵니다...
Application.ShowMainForm := false;
Self.visible := false;
with Form2.Create(nil) do begin
OutHandle := Self.Handle;
Show();
end;
// 여기서 부터는 TForm2 만 보이게 되죠...
end;
procedure TForm1.WMMYShow(var M: TMessage);
begin
// 원래 밑의 코드는 없어두 되는 데... 처음과 같은 상태로 만드는 것이 좋을 듯해서 사족 삼아 달아 둡니다..
Application.ShowMainForm := true;
Visible := true;
end;
end.
----------------------
unit2
----------------------
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
OutHandle :THandle;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// 만들때 자동 생성이 아니라 직접 만들었으므로 죽이는 것두 직접 죽여야 함...
Action := caFree;
// 전체 프로그램으로 보면 IsWindow(OutHandle) 호출은 사족이나... 안전한게 좋은 거죠 모... ^^
if IsWindow(OutHandle) then SendMessage(OutHandle,
WM_USER+4444, 0,0)
end;
end.
OutHandle := Self.Handle;
Show();
end;
틀렸네욥 Form2 --> TForm2 ^^