C++Builder에서는 프로젝트 이름과 똑같은 cpp파일이 있죠
Project1.bpr 에서는 Project1.cpp
이 프로젝트.cpp에 WinMain이 있는것은 아실테구요
C++Builder의 WinMain은 대게 다음과 같은 형태로 되어있습니다.
#include
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
//Form1이 생성되어서 Application->MainForm으로 할당됨
Application->CreateForm(__classid(TForm1), &Form1);
//메인폼을 Show한후에
// PeekMessage , TranslateMessage , DispatchMessage 등을 계속반복함..
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
그러데 일반적으로 WinMain에는 메세지큐에서 메세지를 가져와서(GetMessage)
Despatch해주는 구분이 있는데 C++Builder WinMain에는 없지 않습니까?
VCL에서는 이 구분이 Application 객체 안에 있습니다.
즉
Application->Run 함수안으로 쫓아가보면 그런 작업을 하는곳이 있습니다.
맨처음에 MainForm이 생성되었을때는 Visible=false이지만
Application->Run함수에서 MainForm을 Show해주기때문에 그런 것입니다.
만약 MainForm을 Show되게 하고 싶지 않다면
Application->Run을 호출하기 전에
Application->ShowMainForm=false;를 해주면 Application->Run에서 메인폼을 Show하지 않습니다.
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm=false; //이렇게..
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
...
}
그럼..
S시온스S 님이 쓰신 글 :
: 우선적으로 폼 보면 처음에 Visible이 false로 돼 있더라고요.
:
: 그래서 Visible을 체크해보니까. 처음 시작할때는 false인데
:
: WinMain들어가고나서 약 1초정도 지나니까 true로 바뀌더라고요;
:
:
: 이거 자동 true 안되게할려면 어떻게해야하죠?