C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45855] Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다.
외랑 [] 1326 읽음    2006-07-26 17:48
질문  1. 기존에 폼이 있습니다. 이 상태에서 폼을 하나 더 만들려고 합니다. 어떻게 만드나요?
: WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
: {
:          Application->Initialize();
:          Application->CreateForm(__classid(TfrmMainForm), &frmMainForm); // 이 라인 바로 윗줄에
:          Application->Run();
: }
이 부분은 실제로 특별한 일이 필요하지 않는 경우 직접 코딩할 일은 없습니다. 빌더가 자동생성하는 것이지요.
VC쓰신다고 하니까 MFC의 App위저드가 하는 것처럼 이라고 생각하시면 쉽겠지요
여기서 Run();은 메인이 되는 즉, WinMain()함수가 실행되는 것입니다.  주로 프로젝트에서 메인으로 지정한 폼이 보여지는 형태지요.
다시 질문으로 돌아가서, 현재 하고자 하는 것은 단지 폼을 하나 더 추가 하고 싶은 것이니까
프로젝트를 불러온 상황에서 파일메뉴의 new 를 선택하시고 Form을 선택하시면
자동적으로 프로젝트에 폼이 등록되고, 물론 코드로도
: Application->CreateForm(__classid(내가 만든 폼ID), &폼객체);
요렇게 자동생성 됩니다. 이렇게 자동적으로 등록이 되는 폼은 기본적으로 정적으로 빌더가 관리해주는 형태입니다.
프로젝트의 옵션을 보시면 Forms 탭에 AutoCreate Form(빌더가 관리)에서 Available Form 따로 등록할 수 있습니다.
Available Form은 유저가 할당하고 해제하겠다고 등록시킨다고 생각하시면 됩니다.
올리신 글중에서 A폼이 나타났다가 B폼이 나타난다라고 하셨는데 CreateForm한다고 해서 나타?나진 않습니다. 단지 만드는 것이지요 다만, 기본적으로 메인폼은 나타납니다. 그 외의 폼은 Show();나 ShowModal(); 을 호출해야만 나타나게 됩니다.

질문 2. 기존에 만든 폼을 B 라고 하구요. 제가 만든 폼을 A 라고 합니다. A 폼에서 '마침' 버튼을 누르면 그 때 B 폼이 나타나는 것입니다. 이렇게 하려면 아래와 같이 하면 됩니까?
: Application->Initialize();
: Application->CreateForm(__classid(내가 만든 폼ID), &폼객체);
: Application->Run();
: Application->CreateForm(__classid(TfrmMainForm), &frmMainForm);
: Application->Run();
안된다는 걸 아시겠지요? 문법적으로 에러겠지요... 메인 어플리케이션을 2번 실행시키려고 하는 것이죠..
빌더가 자동적으로 하고 놔두시고 이제 폼이 2개가 되었지요.. 메인폼과 "내가만든폼", 줄여서 "내폼" 이라 하지요..
메인폼의 마침?은 종료하면 내폼이 나타나야하는 건지, 단지 메인폼은 계속 진행되며, 클릭에 따라 폼이 나타나는 건지 모르겠습니다만, 일단 마침 버튼이라고 하셨으므로 메인폼 종료라고 생각을 해봅니다.
메인폼 종료인 경우 조금 틀려지는데 예를 들자면 종료버튼 누르면 종료할 것인가 물어보는 폼? 으로 생각해볼 수 있습니다. 이 경우 메인폼의 OnCloseQuery() 이벤트에 연결시켜야 제대로 된 동작을 볼 수 있습니다.
그냥 메인이 살아 있는 경우 버튼을 누르면 폼이 나타나게 하는 것은 단순히 버튼 클릭이벤트에 내폼->Show();하거나
내폼->ShowModal(); 하는 형태로 호출하여 내폼을 나타나게 할 수 있습니다. Show와 ShowModal의 차이는 설명안해드려도 아시겠지요? VC쓴다고 하셨으니...

질문 3
: 볼랜드 C++ BUILDER 가 VC 닷넷과 비교했을 때 어떤 좋은 점이 있나요?

제가 VC 닷넷을 쓰지 않아 명확한 답변을 드리긴 어렵군요..ㅎㅎ
닷넷은 새로운 언어라고 생각하셔야 겠지요?. 모습은 비록 비슷하지만..
물론 패키지로 된 VC 7이나 VC 8(맞나? 갸우뚱)과 비교하면 맞겠지요...
VC에 비해서 빌더로 DB쪽 사용이 월등히 우세합니다. VC로 구현하면 DB쪽 동작을 다 구현해야 하니까...일이 많죠?..
아... 참 환경적인 측면에서 비교하자면 MS 닷넷과 비교대상이 되는 것은 BDS 2006정도 되겠지요...
빌더 6는 VC 6와 비교해야 겠지요..
많은 차이가 있습니다만 처음 접하는 경우 VC에 비해 더욱 직관적인 작업이 가능하지요, 이해하기 쉽다는 것이죠..
그외 컴포넌트형태로 사용됨으로서 코딩량이 줄어든다. STL의 지원이 휠씬 잘 된다. MFC에 비해 방대한 VCL이 있다..
기타등등.. 써봐야 알 수 있다는 것이 제일 정답일 듯 합니다.
VC의 좋은 점은 코딩환경이 뛰어납니다. 왜냐 일일이 다 코딩해야 하니까.. 또한 디버그 환경도 좀 더 편리합니다.
제일 아쉬운 점은 부분 디버깅 중에 코드 조금 고치고 부분컴파일 하고 계속 진행할 수 있는 점이 ...
빌더는 안되는 걸로 알고 있는데 제가 잘못 알고 있는 건지도 모르겠습니다.

이상 참고 하시라고 쭈욱~ 적어봤습니다.
더 궁금하신 점이 있으시면 또 질문해 주시면...^^
즐~프 하시길.


디케이 님이 쓰신 글 :
: 안녕하세요
:
: 볼랜드 포럼에 가입하고 처음으로 글을 씁니다.
: 저는 VC 닷넷 유저인데 회사에서 볼랜드 CPP 을 사용하는 프로그램이 있어서
: 볼랜드 C++ 빌더 6 프로그램만 설치해놓고 걍.. 어떻게 해야할지 몰라서 쳐다보기만 하고 있습니다. ^^;;
:
: 도움을 주시면 정말 감사하겠습니다.
:
: 제가 구현하고자하는 기능은 단순합니다.
:
: 프로그램을 설치하는 프로그램이 있습니다. AGENT 프로그램이라고도 하는데
: 쉽게 말해.. 카트라이더를 처음에 설치할 때 나타나는 프로그램입니다.
: 카트라이더는 사용자에게 폴더를 어디에 설치할 것인지 묻지않고 무조건 C:\PROGRAM FILES\NEXON 폴더에
: 설치를 합니다.
:
: 현재 회사에서도 유저에게 어느 폴더에 설치할 것인지 묻지 않고 바로 C:\PROGRAM FILES 폴더에 설치를 하고 있습니다.
:
: 제가 구현하고 싶은 것은 유저에게 어느 폴더에 설치할 것인지 묻고 원하는 폴더에 설치하는 것입니다.
:
: 구체적으로 들어가면 레지스터에 키를 만들어서 저장하고 불러오고 하는 게 있는데..
: 그런 것들은 제가 다 알아서 하구요.. 궁금한 것은..
:
: 사실 이제부터가 본론입니다. ^^
:
: WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
: {
:          Application->Initialize();
:          Application->CreateForm(__classid(TfrmMainForm), &frmMainForm); // 이 라인 바로 윗줄에
:          Application->Run();
: }
:
: 이 부분이 있습니다.
: 주석 표시한 곳 // 이 라인 바로 윗줄에
: Application->CreateForm(__classid(내가 만든 폼 ID), &폼객체); <- 이 것을 넣으려고 합니다.
: 이렇게 하려면.. 폼을 만들어야 하는데요...
: 과연 폼은 어느 메뉴에서 만들 수 있습니까? ^^; <- 이게 핵심 질문입니다.
:
: 결론적으로 말하면 A 폼이 나타났다가 B 폼이 나타나는 것입니다.
:
: Application->Initialize();
: Application->CreateForm(__classid(내가 만든 폼ID), &폼객체);
: Application->Run();
: Application->CreateForm(__classid(TfrmMainForm), &frmMainForm);
: Application->Run();
:
: 이렇게 하면 순차적으로 A 폼이 나타났다가 B 폼이 나타나나요?
: 제가 원하는 것은 A 폼이 나타나고 '마침' 버튼을 누르면 그 때 B 폼이 나타나는 것이거든요.
:
: 정리를 하겠습니다.
:
: 1. 기존에 폼이 있습니다. 이 상태에서 폼을 하나 더 만들려고 합니다. 어떻게 만드나요?
: 2. 기존에 만든 폼을 B 라고 하구요. 제가 만든 폼을 A 라고 합니다. A 폼에서 '마침' 버튼을 누르면 그 때 B 폼이 나타나는 것입니다. 이렇게 하려면 아래와 같이 하면 됩니까?
:
: Application->Initialize();
: Application->CreateForm(__classid(내가 만든 폼ID), &폼객체);
: Application->Run();
: Application->CreateForm(__classid(TfrmMainForm), &frmMainForm);
: Application->Run();
:
: 아.. 질문 하나 더 해도 될까요?
: 볼랜드 C++ BUILDER 가 VC 닷넷과 비교했을 때 어떤 좋은 점이 있나요? '특별히 이쪽 용도에 쓰면 좋다' 라는 게 있을 거 같은데.. 뭐.. 예를 들어.. 여러 DB 와 호환이 가능하고 오라클 DB 에 연결해서 사용했을 때 어떤 강력한 점이 있다더라.. 뭐 이런거요..
:
: 길게 써서.. 질문이 좀 복잡할지도 모르겠네요.
: 결국엔 간단한 질문인데 말이죠. 쉽게 설명하려다보니 글이 길어졌습니다. ^^
: 모두 회사일 하느라 바쁘실텐데.. 수고 많으십니다.

+ -

관련 글 리스트
45838 볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. 디케이 938 2006/07/25
45855     Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. 외랑 1326 2006/07/26
45839     Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. raz1004 1682 2006/07/25
45854         Re:Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. 이재득 988 2006/07/26
45843         Re:Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. RfRedEye 895 2006/07/26
45844             Re:Re:Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. raz1004 1004 2006/07/26
45856                 Re:Re:Re:Re:볼랜드 초보 사용자입니다. 폼을 띄우려고 합니다. 외랑 1109 2006/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.