강아지 님이 쓰신 글 :
: 제 나이 34살 직장인.
:
: 컴과는 전혀 무관한 직업을 가지고 있지만, 항상 programming 에 관심이 많았던 저...
: 이제와 늦은나이에 vc++ 을 버리고,
: 새로운 tool 로서, 상용프로그래밍이 가능한 무료 IDE 를 선택하는 과정에서
: 결국 turbo c++ explore 2006 를 찾아냈습니다.
:
: 그런데, 환경이 VC++ 와는 전혀 다르기 때문에 정말 뭐가 뭔지 알수가 없군요...
:
: 이에, 여러분들의 고견을 듣고 싶습니다.
: 1. c++ builder 와 turbo c++ explore 2006 는 같은 거라 들었고 , 단순히 COMPONENT 의 추가가 가능한지에
: 따라서 나뉜거라 들었는데... 맞나요?
: 강좌를 하나 봤는데, Object Inspector 화면이 제가 깔은 것과 조금 달라서 여쭙니다.
* C++Builder와 turbo버젼의 차이.. 저도 그렇게 알고 있습니다.
* 보신 동영상 강좌가 어떤 것인지요?
: 2. vc 의 api 프로그래밍시 main 윈도우 크기라든가 위치 설정 소스가 있었는데 지금은 없구,
: 그리고 mdi 에서 자식 윈도우가 자동으로 하나 뜨도록 하고 싶은데, 어디다 어떻게 해야 할지 모르겠습니다.
* MDI 프로그램을 해보시려는 것인가요?
MDI프로그램을 하려면 첫번째 생성되는 폼의 FormStyle이 fsMDIForm이어야 합니다.
* 그리고 자동으로 MDI-Child폼이 하나 뜨려면?
File->New에서 Form하나 추가하시구요.
그 추가한 폼의 ObjectInspector에서 FormStyle을 fsMDIChild로 하시면 됩니다.
>> 프로젝트 옵션의 Forms에서 Auto-create에 MDIForm이 제일 위에 있어야 하구.. MDIChild로 된것도
Auto-Create에 들어가 있으면 됩니다.
: 3. turbo c++ explore 2006 의 mdi project 자동생성시 처음 만들어지는
: 파일들의 연관성 및 구조를 좀 알고 싶습니다.
turbo c++ explore 2006은 써보지 않아서 잘 모르겟습니다만..
C++Builder 2007 Pro로 mdi project 생성시켜보니..
mdiapp.cpp //WinMain함수가 있는 파일입니다.
//프로그램의 시작이 있고 메인폼과 About폼을 생성하고
//프로젝트를 시작하는 unit입니다.
main.cpp //MDI메인폼이네요
- main.h
- main.cpp
- main.dfm //xxx.dfm 파일은 폼위에 컴포넌트 및 컨트롤 그리고 폼의 프로퍼티 등의 정보를 저장해둔 파일
//이 파일을 컴파일되면 그대로 리소스파일로 만들어져 exe에 포함되구요
//메인폼이 Create될때 리소스에서 xx.dfm에 들어있던 정보를 읽어와서
//폼위에 컨트롤을 만들고 이벤트를 연결하고 프로퍼티를 설정합니다.
ChildWin.cpp //Child폼도 메인폼과 마찬가지구요 다른점은 FormStyle을 fsMDIChild로 되어있네요
- ChildWin.h
- ChildWin.cpp
- ChildWin.dfm
mdiapp.res //기본 exe의 리소스 파일이 들어가 있습니다.
//맨처음에 생성되었을때는.. 디폴트 아이콘이하나 들어있을정도 겠네요
about.cpp //프로그램 About용 Form이네요 .. FormStyle은 fsNormal 이구 BorderStyle이 bsDialog이네요
- about.h
- about.cpp
- about.dfm
mdiapp.cpp파일을 보니 다음과 WinMain함수 소스가 있네요
프로그램 시작되면서 ..
1) 메인폼 생성하고
2) About폼 생성하네요
3) 그리고 메세지 펌프 루프로( Run()) 들어가네요
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->CreateForm(__classid(TAboutBox), &AboutBox);
Application->Run();
return 0;
}
위 run함수 호출앞에
Application->CreateForm(__classid(TMDIChild), &MDIChild);
가 들어가면 디폴트로 Child폼도 하나생성될것입니다.
그럼..