|
미혜 님이 쓰신 글 :
: 2개의 폼이 있는데, 버튼을 클릭하면 다음 폼이 뜨고 기존 폼은 닫아야하는데요..
: FrmKor->Show();
: FrmMain->close();
:
: close가 없으면 FrmKor화면이 뜨는데요..
: 기존 화면이 닫혀지지 않아서 close했더니..
: 폼이 전체가 다~ 닫히더라구요..
: 다른 방법이 있나요?
메인 폼을 닫으면 당연히 프로그램 전체가 종료합니다.
메인 폼은 마치 콘솔 프로그램의 main() 함수와 비슷한 역할이지요.
메인 폼을 변경하는 방법은 [Project]-[Options...]-[Forms]에서 하면 됩니다.
1) 첫번째 폼이 메인 폼으로서 대부분의 기능을 담당하고,
두번째 폼이 서브 폼이라면,
그냥 FrmMain->Hide() 로 메인 폼을 숨겨버리세요.
메모리를 아주 절약해야하는 경우가 아니라면 상관없습니다.
원하신다면 나중에 FrmMain->Show() 로 다시 보일 수도 있습니다.
물론 프로그램을 종료할 때는
FrmMain->Close() 를 하면 됩니다.
2) 첫번째 폼이 메인 폼이 아니라,
메인 폼의 초기 환경을 설정한다는지 하는 기능을 한 후 닫아야 하는 다이얼로그 박스인 경우라면,
(예를 들어 DB프로그램 같은 경우에 ID와 패스워드를 입력받고 DB에 연결하는 경우)
이 첫번째 서브 폼을 Show() 대신 ShowModal()로 열면 됩니다.
이렇게 하려면, 프로젝트이름.cpp 파일을 수정해야 합니다.
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try {
Application->Initialize();
Application->CreateForm(__classid(TSDIAppForm), &SDIAppForm);
Application->CreateForm(__classid(TdlgDBConnect), &dlgDBConnect);
if (dlgDBConnect->ShowModal() != mrOk) // 이런 식으로 호출하면 됩니다.
// Cancel 버튼을 누르거나, DB 연결에 실패한 경우 프로그램 종료
Application->Terminate();
Application->Run(); // 메인 폼은 여기서 호출합니다.
} catch(Exception &exception) {
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------
|