프레임은 한 폼에 복잡한 디자인을 넣을때 매우 유용합니다.
탭컨트롤 같은 좋은 컴포넌트가 있지만, 아무래도 그 폼이 떠 있을때
필요지 않은 화면을 위해 불필요하게 리소스가 사용되는 문제가 있죠.
또한 한 폼에 몰아서 코딩해야 하는 문제도 있죠.
아래는 메신저 프로그램에서 메신저 메인창에 로그인 화면을 붙여 넣는 예제입니다.
MSN 에서 로그인 되는 듯한 효과를 내기 위한 방법입니다.
실제 로그인 관련 코딩은 TFrame_Login 클래스에 다해 주므로,
메인 폼에 몰아 코딩하지 않아도 되므로 메인 쪽이 간편해지고
전체 소스가 보기 편하고 관리하기도 쉽습니다.
TFrame_Login 에서 메인쪽에 필요한 기능을 부를때는 직접 부르지 않고
중간에 CMainInterface 클래스를 경유해서 부르는 방식을 사용해 컴파일 시간을 절약했습니다.
File->New->Frame 선택해 TFrame_Login 로 프레임에 로긴화면과 기능을 구현
메인 클래스의 적당한 섹션에 선언
TFrame_Login *FrameLogin;
메인 Create 이벤트에서 만든 프레임 생성
// 로긴창을 위한 프레임을 동적으로 생성하고 이를 메인화면에 붙이고 위치를 조정한다.
FrameLogin = new TFrame_Login(this); // 현재 폼을 오너로 해서 생성.
TRect rect = Rect(0, 0, ClientWidth, ClientHeight); // 현재 폼을 전부 덮는 크기로 지정.
FrameLogin->Dock(this, rect); // 현재 폼에 도킹시켜 보이게 한다.
메인 폼리사이즈 이벤트에서 화면 크기 변경에 반응시키기.
if (FrameLogin)
{
FrameLogin->Width = ClientWidth;
FrameLogin->Height = ClientHeight;
return;
}
메인에서 해당 프레임의 사용이 끝나면 소멸
if (FrameLogin)
{
delete FrameLogin; // 바이 바이..
FrameLogin = NULL;
}
이상 허접 팁이었습니다.
|