|
안녕하세요...
오랫만에 들어와 봤네요.^^
폼 클래스가 할당됬는지 비교해 보고 만드시면 되겠네요...
if( frmMsg == NULL )
frmMsg = new TfrmMsg(Application);
frmMsg->Show();
여기서 한가지 문제점은 frmMsg가 언제 NULL이 되는냐 입니다.
frmMsg를 Close해도 할당된 메모리에는 그대로 있습니다.
일반적으로 동적으로 생성된 클래스는 free or delete 로 메모리를 해제하는데.
Show폼의 경우에는 언제 폼이 종료될지 모르기 때문에 Show폼 자신의 Event에서
해제하도록 해야 합니다.
방법은 frmMsg 폼의 FormClose Event에서
Action = caFree;
를 해주시고 위의 NULL체크를 위해
FormDestroy Event에서
frmMsg = NULL;
을 선언해주면 될겁니다.
^^ 수고하세요...
시간한줌 님이 쓰신 글 :
:
: 안녕하세요~
: 시간한줌 입니다. 2003년 새해 복 ~ 많이~~~~~~~~~~~~ 받으세요~ &^^&
:
:
: 본론~!
:
: 윈도우 창을 동적으로 생성하는데 조금 문제가 있어서 질문 드립니다.
:
: 간단히 말해 msn을 예로 들겠습니다.
:
: A와 B라는 사용자가 대화를 하죠~
: 그런데 B가 창을 닫고 A가 메시지를 날리면 다시 창이 뜹니다.
: 그래서 또 계속 A와 B가 예길 하는데
: 이를 시기하던 C가 B에게 말을 걸면~ B와 C가 대화하는 새로운 창이 뜹니다.
:
: 이런 창 구분은 어떻게 해주나요?
:
: 간단한 예를 들어 주셨으면 정말 감사하겠습니당~ ^^;;;
:
: Application->CreateForm(__classid(TfrmMsg), &frmMsg);
: frmMsg->Show();
: 이렇게 하면 계속 새 창이 뜨고~ ㅠㅠ;
: 우엥~
|