- CVI 정보나눔(www.cvi.kr)
- 스터디
- 강좌,팁,유용한것
강좌,팁
글 수 116
제가 질문과 답변 게시판에 "실행후 Fatal Run-time Error"라는 제목으로 올린 질문과,
야리싸내님이 "아~~ 이런 에러는 또 처음이네요....." 라는 제목으로 올리셨던 문제를 피해가는 방법을 강구해보았습니다.
다른 분들은 어떤지 모르겠는데요, 제가 사용한 Windows 2000 Professional 과 MS Office XP가 설치된 상황에서는 CVI로 작성한 프로그램이 종료시에 메모리 관련 에러가 나곤 했었습니다.
MS Office XP가 설치되지 않은 환경에서는 아무 문제 없는데, 유독 제 PC나 MS Office XP가 설치된 다른 분의 PC에서는 종료시에 이유없는 에러가 나곤 하더군요.
그런데, 어떤 때는 그런 에러가 나지 않는 경우도 있었습니다.
그래서 어떨 때 그런 에러가 나지 않는지를 여러번의 테스트를 통해 알아봤습니다.
결론은,
Main Panel이 display된 이후에 다른 Panel이 display되면 종료시에 아무 문제가 없었습니다.
프로그램 내에서 MessagePopup()같은 Popup Panel을 사용해도 문제가 없어지더군요.
그래서 프로그램 시작시에 크기가 0인 Panel을 하나 순간적으로 띄웠다가 숨기는 방법을 이용하기로 했습니다.
UIR 파일에서 임의의 Panel을 하나 만드십시오. 그리고, 그 속성을 아래와 같이 하십시오.
--------------------------------------------
Height: 0 (Panel이 화면 상에 잘 보이지 않도록 하기 위한 조치)
Width: 0 (Panel이 화면 상에 잘 보이지 않도록 하기 위한 조치)
Other Attributes의 Title Bar Visible를 체크
---------------------------------------------
그런 다음, main()함수의
DisplayPanel (panelHandle);
이후에
DisplayPanel (panelHandle2);
HidePanel(panelHandle2);
이렇게 넣으주시면 되겠습니다.
대부분 이렇게 하니 문제가 해결되더군요.
이런 문제가 발생하지 않는 분들은 상관없겠습니다.
야리싸내님이 "아~~ 이런 에러는 또 처음이네요....." 라는 제목으로 올리셨던 문제를 피해가는 방법을 강구해보았습니다.
다른 분들은 어떤지 모르겠는데요, 제가 사용한 Windows 2000 Professional 과 MS Office XP가 설치된 상황에서는 CVI로 작성한 프로그램이 종료시에 메모리 관련 에러가 나곤 했었습니다.
MS Office XP가 설치되지 않은 환경에서는 아무 문제 없는데, 유독 제 PC나 MS Office XP가 설치된 다른 분의 PC에서는 종료시에 이유없는 에러가 나곤 하더군요.
그런데, 어떤 때는 그런 에러가 나지 않는 경우도 있었습니다.
그래서 어떨 때 그런 에러가 나지 않는지를 여러번의 테스트를 통해 알아봤습니다.
결론은,
Main Panel이 display된 이후에 다른 Panel이 display되면 종료시에 아무 문제가 없었습니다.
프로그램 내에서 MessagePopup()같은 Popup Panel을 사용해도 문제가 없어지더군요.
그래서 프로그램 시작시에 크기가 0인 Panel을 하나 순간적으로 띄웠다가 숨기는 방법을 이용하기로 했습니다.
UIR 파일에서 임의의 Panel을 하나 만드십시오. 그리고, 그 속성을 아래와 같이 하십시오.
--------------------------------------------
Height: 0 (Panel이 화면 상에 잘 보이지 않도록 하기 위한 조치)
Width: 0 (Panel이 화면 상에 잘 보이지 않도록 하기 위한 조치)
Other Attributes의 Title Bar Visible를 체크
---------------------------------------------
그런 다음, main()함수의
DisplayPanel (panelHandle);
이후에
DisplayPanel (panelHandle2);
HidePanel(panelHandle2);
이렇게 넣으주시면 되겠습니다.
대부분 이렇게 하니 문제가 해결되더군요.
이런 문제가 발생하지 않는 분들은 상관없겠습니다.
허창원
조금 더 확실한 방법은 main()함수에서 메인 panel을 discard 하기 직전에 실행하는 거겠군요. 다음과 같이 말입니다. int main(...) { .................. /// Windows2000, MS Office 환경에서 종료시 생기는 문제를 해결하기 위해...:시작 DisplayPanel (panel_Tmp); HidePanel (panel_Tmp); DiscardPanel (panel_Tmp); /// Windows2000, MS Office 환경에서 종료시 생기는 문제를 해결하기 위해...:끝 DiscardPanel (panelHandle); return 0; }