|
읽어보다가 제이름이 나와서 잠깐 놀랬네요.. ㅎ_ㅎ;;
질문 1. 폼종료시 폼만 종료시킬수는 없나요?
MainForm을 Close 하면 프로세스가 종료됩니다.
윤경님이 원하시는 작업을 하기위해 할수 있는 방법이 몇가지 있네요
Close 대신 Hide를 이용하는 방법도 있습니다.
다른 방법은 메인폼을 숨기고 다른 폼을 메인폼인것처럼 보이게 작업하시면됩니다.
메인폼이 아닌 경우 Close를 하면 메모리 소거는 일어나지 않습니다.
다시 Show 하면 보여지지요 ( OnClose 이벤트에서 Action에 caFree를 준경우는 제외합니다. )
- 결론적인 답변 : OnCloseQuery 이벤트에서 CanClose의 인자값으로 false를 주면 종료되지 않습니다.
종료되는 조건을 만들어서 그외의 경우에는 Hide 시키는 방법을 사용하시면 소스에 큰 변화를 주지 않아도 되겠군요
방금 윤경님 글을 읽어봤는데 미니마이즈도 괜찮은 방법이네요 ㅋ_ㅋ;;
질문2. 에 대한 답변은 추측적인 답변을 드려야겠는데요
엑세스 바이얼레이션은 잘못된 코드가 있을거 같군요 더블클릭시 하는 일들에 대한 코드를 한번 보시기 바랍니다.
실행파일로 실행할때는 접근에러같은 경우 뜨는 것들도 있고 뜨지 않는것들도 있습니다.
트레이 아이콘을 사용하는데 잘못된 코드가 있을거같으니 확인하셔야 할거같습니다.
빌더에서 실행시키는 경우에 cpp를 찾는것은 해당 트레이스를 확인하기 위함입니다.
소스는 공개되어있지 않을테니 그냥 무시하시는편이 좋을거 같군요
좀더 정확한 답변을 원하신다면 에러가 발생하는 코드를 확인하시어 올려주시면 좋을거같네용 ^^
질문3. 에 대한 답변은 '예' 입니다.
Form1을 인식하지 않는 이유는 저도 자세히는 모르겠군요 ^^
공윤경 님이 쓰신 글 :
: 현재 프로그램을 실행하면 트레이아이콘이 뜨고 실제 폼은 보이지 않다가 트레이아이콘 팝업에서 보기...를 클릭했을때 폼이 뜨도록 했거든요.
: 질문 1. 폼종료시 폼만 종료시킬수는 없나요?
: Close()를 했더니 기냥 종료되어버리고 visible은 화면이 지워지지는 않는거 같은데
:
: 질문 2. 그냥 exe화일을 클릭하면 실행이 제대로 되는데요. 빌더에서 실행시킨뒤 생긴 트레이 아이콘을 클릭하면 에러경고창이 뜨는데요 EAccessViolation 클라스의 열외가 생성되었다는 메세지랑 또하나의 대화창이 뜨고 Trayicon.cpp를 발견할수없다고 나옵니다. 왜 이런 현상이 나올까요?
:
: 제가 실행한거는요..만들어진 폼에 트레이아이콘을 추가하고 이미지리스트를 추가하고 팝업을 추가한다음에 트레이아이콘에 팝업과 아이콘을 연결시켰습니다. 그리고 뮤텍스를 추가했구요
:
: HANDLE mutex;
: try
: {
: // Get mutex
: const char mutexname[] = "HTI_RemoteMouseClient";
: mutex = CreateMutex(NULL, TRUE, mutexname);
: if (mutex == NULL) {
: // Mutex create error
: return (0);
: }
: if (GetLastError() == ERROR_ALREADY_EXISTS) {
: // Mutex already exist
: return (0);
: }
:
: Application->Initialize();
: Application->ShowMainForm = false;
: Application->CreateForm(__classid(TFrmMain), &FrmMain);
: FrmMain->Visible=false;
: Application->Run();
:
: }
: catch (Exception &exception)
: {
: Application->ShowException(&exception);
: }
: // Release mutex
: ReleaseMutex(mutex);
: return 0;
:
:
: 질문3 여기서
:
: Application->Initialize();
: Application->ShowMainForm = false;
: Application->CreateForm(__classid(TFrmMain), &FrmMain);
: FrmMain->Visible=false; <-----이부분
: Application->Run();
: 화살표 부분에서 visible이 멤버가 아니라는 말이 나옵니다. 여기서 저 한줄을 빼버려도 상관없는건가요?
:
: 너무 두서없이 질문해서 죄송합니다.
: 저번에 수야님이...직접 찾아보는것도 도움이 된다구 하셔서요. 찔끔 하고 하다가... 여기 게시판을 찾아가면서 지금까지 왔는데...다시 막히네요...혹시...아시는분 도움 부탁드립니다.
|