|
BCB6 Ent에서 질문입니다.
질문 1.
비트맵 이미지 크기를 변경하기 위해서
Graphics::TBitmap을 두개 생성한뒤 한 비트맵에서 다른 비트맵으로
Graphics::TBitmap의 맴버함수인 StretchDraw를 이용하여 크기를 변경할경우
어디선가 메모리 누수가 일어 나는 것 같습니다. (두 비트맵은 std::auto_ptr을 이용하여 만들었습니다.)
다만 실제 메모리 사이즈는 크게 증가하지는 않고 다만 사용하다가 리소스 부족이라고 뜨는 것을 봐서는
단순 메모리 누수가 아닌 다른 문제 같은데요.
해결 방법이 있나요? 문제는 약 초당 20번씩 크기를 변경할때 한두시간이 지나야 발생합니다.
질문 2.
프로그램 문제인지 빌더의 버그인지 간혹 try... catch문이 정상 동작을 안하는것 같습니다.
dll에서 발생하는 예외를 처리하기 위해서 WinAPI의 SetUnhandledExceptionFilter를 이용하여 잡도록 하였고 정상 동작을 하다가..
어느 순간... 프로젝트명의 cpp파일의 try catch부분의 ShowException를 비활성 하였음에도 불구하고 예외발생시 메세지를 띄우는 경우가 생기고 이후로 몇몇 부분의 예외 처리가 정상 동작을 안합니다.
어느부분에서 실수 한 것일까요?
현재 강제로 Application->OnException을 만들어서 지정해주니 메세지 뜨는 부분을 해결 됬지만 WinAPI의 SetUnhandledExceptionFilter부분은 정상 동작을 안하는 것같습니다.
질문 3.
빌더의 기본제공되는 TTrayIcon을 이용하여 프로그램을 제작 하였더니 TrayIcon->Minimize()를 해버리면 FindWindow를 했을시 다른 값을 반환 합니다.
Minimize이전에는 정상적으로 헨들을 가져오고 해당 헨들을 이용하여 메세지를 정상적으로 보낼수 있지만
이후 숨김상태에서는 실패값이 아닌 다른 헨들을 가져와서 이후 메세지를 정상적으로 보낼수가 없습니다. (받는 프로그램이 못받음으로)
이건 원래 이런건 가요?
특이 사항으로 Minimize시 몇몇 부분의 코드는 작동하고(타이머나 쓰레드) 몇몇 부분은 멈춤니다.
다만 창을 하나라도 띄우거나 트레이에 등록한 PopupMemu를 띄우거나 하면 또 정상적으로 받아와 집니다.
|