|
이건 참 찾아볼 필요도 없는 내용이라 답변하기가 쫌 거시기 하네요 ^^
1. 컴포넌트 조정 -> 팁&트릭 47번 찾아보세요
2. TerminateProcess는 함수이름 그대로 프로세스를 죽이는 것이어서 Form1 도 날라갑니다.
Form2 를 멤버로 선언하던가 extern 된 걸 그대로 갖다가 쓰거나 무관하구요..
폼생성
Form2 = new TForm2(this);
Form2->Show();
폼제거
delete Form2;
이렇게하면 메모리에서도 사라집니다.
근데 Form2 에서 닫기 버튼 눌러서 닫을 수도 있으므로 Form2 가 자신을 스스로 메모리에서 없애도록 만들자면
Form2 의 OnClose 이벤트에서
Action = caFree;
를 주면 delete 를 수행한 것처럼 Form2 의 메모리를 날리게 됩니다.
linuxman 님이 쓰신 글 :
: 1.일반적으로 C++ builder의 디자인타임에서 처럼.
: 콤포넌트를 폼에 올려놓고, 마우스로 크기조정을 할수 있잖아요...
: 좌우로 늘린다든지...상하로 늘린다든지...우리가 만든 프로그램에서
: 실행된 후에..콤포넌트의 크기를 마우스로 늘렸다 ,줄였다 하는 방법을 알고 싶습니다..
: (원하는건 라벨 콤포넌트나 이미지 콤포넌트 인데...) 어떤 콤포넌트 라도 괜찮습니다..
:
: 실행된후에 콤포넌트의 크기를 마우스로 줄였다 늘였다 할수 있는 방법좀 알려주시면 감사하겠습니다...
: (매우 어려울것이라 생각이 되는데...... )
:
: 2. form1에서 동적인 폼 (form2)를 생성했습니다.
: 그리고 특정 조건이 됐을때...form2를 죽이려고 합니다..
: 즉 아래처럼 죽이면 ...Form1까지 통째로 죽어 버리는 현상이 나타납니다..
: ( Form2만 죽이는것이 목적입니다 )
:
:
: DWORD ProcessId;
: HWND hWnd = FindWindow(NULL, "Form2");
: if(hWnd)
: {
:
: GetWindowThreadProcessId(hWnd, &ProcessId); // hWnd로 프로세스 ID를 얻음..
: HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
: if(hProcess) TerminateProcess(hProcess,0);//또는 ExitProcess 사용해서 죽임..
:
: }
:
: 그러지 않고 , SendMessae ( Form2->Handle, WM_CLOSE, 0,0 ) 하면 ... form2가 죽긴죽는데..form2가 사용하던 메모리나,타이머들이 clear되지 않은채로 form2가 죽어버리니까, form2가 죽은후에 메모리 error가 죽~~ 떨어집니다.
:
: 처음것의 TerminateProcess(hProcess,0);로 form2만 죽이고 싶은데...무엇이 잘못됐나요?
|