|
MDIChildren을 하나씩 close하면 MDIChildCount값도 변합니다.
for문을 추척해보세요...
그러면 쉽게 보이니까요.
처음것은 for문 끝날때까지 맨 마지막 자식폼을 닫습니다.
보통 책자에 나와있는 코딩이 다 그렇게 되어있더군요.
저는 별로 좋은 방법이라고 생각하지 않습니다.
그래서 제가 코딩하는 방법을 알려드리지요.
좀 더 좋은 코딩은 이런게 아닌가 합니다.
void __fastcall TForm1::Button1Click(TObject *Sender) {
while(MDIChildCount) MDIChildren[MDIChildCount-1]->Close();
}
니엘이 님이 쓰신 글 :
: Form1이 MDIParent 폼이고... 어떤 버튼을 눌렀을때...
: Form1의 모든 MDIChild 폼을 모두 Close하는 함수입니다.
:
: void __fastcall TForm1::Button1Click(TObject *Sender) {
: for(int i = MDIChildCount-1; i >= 0; i--)
: MDIChildren[i]->Close();
: }
:
: 근데 이상하제... 위의 for문을
:
: for(int i=0; i<MDIChildCount; i++)로 바꿔서 실행하면..
:
: 꼭 마지막 MDIChild 폼 하나가 Close()를 안하더라구요.
: 왜 그렇죠??
|