본문 바로가기

쓰기

MFC 모달리스 창 처리할때 흔히 쓰는 방법대로

 void CDumpWindow::PostNcDestroy()
{
    delete this;
    CDialog::PostNcDestroy();

    // TODO: 여기에 메시지 처리기 코드를 추가합니다.
}

이렇게 써두고

헤더에다가
   CDumpWindow *m_pDumpWindow[2];

선언해서

 BOOL CATPluginApp::OnPluginInit(HWND hSettingWnd, LPSTR cszOptionStringBuffer)
{
    g_hSettingWnd = hSettingWnd;
    g_szOptionStringBuffer=cszOptionStringBuffer;

    m_pDumpWindow[0] = new CDumpWindow;

    if(m_pDumpWindow[0])
    {
        m_pDumpWindow[0]->Create(MAKEINTRESOURCE(IDD_DumpWindow),0);
        m_pDumpWindow[0]->ShowWindow(SW_SHOW);
    }

    return TRUE;
}


요렇게 해서

종료할때

 BOOL CATPluginApp::OnPluginClose()
{
    // 주의: 여기서 메모리 확보 등을 하면 에러 발생.
    // TODO: 플러그인 종료 준비, 자원 반환 등을 한다.

    if(m_pDumpWindow[0]!=NULL)
    {
        m_pDumpWindow[0]->DestroyWindow();
        m_pDumpWindow[0]=NULL;
    }

    if(m_pDumpWindow[1]!=NULL)
    {
        m_pDumpWindow[1]->DestroyWindow();
        m_pDumpWindow[1]=NULL;
    }

    return TRUE;
}

이렇게 먹여주면



필터 목록에서 추가 제거할때는 분명 잘 되는데,

필터를 넣어둔 상태에서 '프로그램을 닫아버리면'

error.PNG
오류가 나지 말입니다 =ㅅ=;;;;;
아니 왜 이러는거;;;

디버깅 찍었을때는
이미 CATPluginApp::OnPluginClose()들어온 시점에서 CDumpWindow가 삭제된 상태
-_-;;;;

뭥미

+ 추가
8월차 MultiPlugin으로 테스트해보니
옵션창에다가 추가를 한뒤 닫는 순간에
이미 CDumpWindow가 종료되고 있더랍니다[....]
조회 수 :
13934
등록일 :
2008.12.27
10:44:13
엮인글 :
https://arallab.hided.net/4131/493/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/4131

whoami

2008.12.28
10:07:37
에.. 그게 좀 그렇습니다;; OnPluginClose 가 불리는 시점에서 이미 게임이 종료되어 있기 때문에 거기서 열린 윈도우를 정리하려고 하거나 열려있는 FILE 을 닫으려고 하면 저런 에러가 납니다. 아마 아랄 자체의 버그인가 싶기도 하고요. 특히 DebugATCode 를 사용중에 게임을 닫아버리려고 하면 에러창을 꼭 봐야 한다죠;;

한가지 방법이 있기는 한데.. DumpWindow 를 게임 윈도우의 자식으로 생성하는 겁니다. 이렇게 하면 게임이 죽을때 WM_DESTROY 를 자식 윈도우에게 뿌리기 때문에 에러없이 처리할 수 있습니다. 물론 게임은 켜져있지만 필터만 Unload 하는 경우에 대비해서 OnPluginClose 에서 IsWindow() 등으로 윈도우가 살아있는지 확인해서 살아있다면 적절한 처리를 해주는 것이 필요합니다.

참고로 게임 윈도우를 찾아내는 방식은.. ATCode 플러그인 소스 내의 Win32UIMgr 클래스를 참조하시기 바랍니다.

Hide_D

2008.12.28
10:53:19
오우 감사합니다~

그런데, 궁금한건

왜 API를 사용하는 DumpText에서는 왜 아무런 문제가 없었을까 하는 점이죠 =ㅅ=;;

유메

2008.12.30
08:29:52
;ㅅ; 힘내세요. 정식 필터가 나올 그날까지~ (랄까 이미 정식 필터인가?)
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 155439
309 Archive [플러그인] DumpText Hotfix 20080824 [4] file Hide_D 2008-08-24 9957
308 OtherFiles 10MB 파일 여는데 걸리는 시간을 테스트해봤습니다. [4] file Hide_D 2008-08-25 11922
307 Talk 토모요 애프터...... [2] file whoami 2008-08-26 10576
306 Archive [플러그인, 소스] FixLine 테스트 버전 Archive(08.31 12:12 갱신) [1] file Hide_D 2008-08-30 13429
305 Talk [질문]UTF 코드를 SHIFT-JIS와 KS코드로 변환 [4] 호기심맨 2008-09-02 13984
304 Archive [플러그인, 소스] DenyWord 테스트 버전 20080907 file Hide_D 2008-09-07 8757
303 Archive [플러그인, 소스] DenyWord 테스트 버전 20080907_2 file Hide_D 2008-09-07 8802
302 Archive [플러그인, 소스] DenyWord 테스트 버전 20080908 file Hide_D 2008-09-08 8530
301 Archive [플러그인, 소스] DenyWord 테스트 버전 20080910 [1] file Hide_D 2008-09-10 10322
300 Archive [플러그인, 소스] ATCode 테스트 버전 20080911 [3] file whoami 2008-09-11 9210
299 Talk DenyWord 변경한 내용입니다 Hide_D 2008-09-11 9493
298 Archive [플러그인, 소스] FixLine 테스트 버전 Archive2(09.14 12:49갱신) [1] file Hide_D 2008-09-12 16618
297 Archive [플러그인, 소스] OriginalText 테스트버전 [4] file Hide_D 2008-09-12 13990
296 Archive [플러그인, 소스] CustomScript 테스트 버전 Archive(09.21 02:50갱신) [1] file Hide_D 2008-09-15 17632
295 Talk 하루카 원문 [1] 나는누구인감? 2008-09-16 10337
294 Archive [플러그인, 소스] DenyWord 테스트 버전 20080917 file Hide_D 2008-09-17 9665
293 Archive [플러그인, 소스] DenyWord 테스트 버전 20080921 file Hide_D 2008-09-21 13927
292 Talk 히데님께 문의 해요! [2] file 라파에 2008-09-21 11922
291 Talk 조만간 멀티플러그인은 기본 기능으로 흡수시킬까 합니다. 아랄 2008-09-21 11346
290 Talk 일단, 옵션창 이렇게 생기면 되나요? file Hide_D 2008-09-22 11569