주메뉴 바로가기 본문 바로가기 하단 바로가기

고객지원

기술문의

ILOG Views와 Windows API와의 인터페이스 방법을 알려주세요

  • 이상일
  • 2003.04.09
  • 조회수 1,834
안녕하세요...

저번에 알려주신데로 IlvMainLoop대신 이벤트를 가로채기위하여 IlvEventLoop를 대신 이용하였습니다.
그런데 막상 Windows API를 쓰려하니 잘 안되더군요.

우선 getSystemView를 이용하여 윈도우 핸들을 얻었는데 기타 윈도우메시지 WM_....등의 메시지를 SendMessage나 PostMessage의 윈도우 API를 적용하여 메시지를 처리했지만 EventLoop가 처리하지 못하고 있습니다.

윈도우 프로시저( WndProc ) 형태로 이벤트를 받아 처리할수 있는 모듈이 별도로 필요한건지 필요하다면 어떻게 구현하는지 좀 알려주세요.

좀 급하거든요... 이부분만 해결된다면 ILOG와 Windows API를 잘 혼용해서
쓸수 있을것 같은데... 이부분이 해결이 안되네요... 꼭 부탁드립니다.

그럼 수고하세요.

댓글 5

  • LechuckRoh2003-04-09
    아래쪽에 답글을 달려니 에러가 나서 여기에 답글을 올립니다 ㅡ.ㅡ;

    -----------------------------------------------------------------

    질문하신 내용대로 테스트를 해봤더니 역시나 안되는군요.. ㅜ.ㅜ

    예전에 어디선가 위의 방법대로 잘 되었던걸로 기억이 나는데
    안되길래 한참 동안의 테스트 결과로 다른 방법으로 해결을 했습니다.

    IlvAbstractView::setWindowProc() 함수를 사용해서 직접 WindowProc를
    설정해준다음 이곳에서 message를 처리하니 되는군요..

    테스트한 샘플 소스코드를 첨부하니 참고하세요.. ^^

    테스트환경은 Visual C++ 7.0, views 5.0입니다.

    아이콘삭제
  • LechuckRoh2003-04-09
    아래쪽에 답글을 달려니 에러가 나서 여기에 답글을 올립니다 ㅡ.ㅡ;

    -----------------------------------------------------------------

    질문하신 내용대로 테스트를 해봤더니 역시나 안되는군요.. ㅜ.ㅜ

    예전에 어디선가 위의 방법대로 잘 되었던걸로 기억이 나는데
    안되길래 한참 동안의 테스트 결과로 다른 방법으로 해결을 했습니다.

    IlvAbstractView::setWindowProc() 함수를 사용해서 직접 WindowProc를
    설정해준다음 이곳에서 message를 처리하니 되는군요..

    테스트한 샘플 소스코드를 첨부하니 참고하세요.. ^^

    테스트환경은 Visual C++ 7.0, views 5.0입니다.

    아이콘삭제
  • LechuckRoh2003-04-09
    질문하신 내용이 EventLoop에서 받아온 WM_xxx 윈도우 메시지를 처리를
    못하고 있다는 것 같은데, 다음과 같은 방법으로 처리를 하시면 됩니다.


    MSG message;
    while (IlvEventLoop::getEventLoop()->nextEvent(&message))
    {
    if (message.message == WM_xxx)
    {
    ...
    process custom event
    ...
    }

    IlvEventLoop::getEventLoop()->dispatchEvent(&message);
    }


    질문의 내용을 정확히 파악을 못해서 혹시 다른 답변을 드렸다면 다시
    리플달아주세요..

    그럼. 수고하세요.
    아이콘삭제
  • LechuckRoh2003-04-09
    질문하신 내용이 EventLoop에서 받아온 WM_xxx 윈도우 메시지를 처리를
    못하고 있다는 것 같은데, 다음과 같은 방법으로 처리를 하시면 됩니다.


    MSG message;
    while (IlvEventLoop::getEventLoop()->nextEvent(&message))
    {
    if (message.message == WM_xxx)
    {
    ...
    process custom event
    ...
    }

    IlvEventLoop::getEventLoop()->dispatchEvent(&message);
    }


    질문의 내용을 정확히 파악을 못해서 혹시 다른 답변을 드렸다면 다시
    리플달아주세요..

    그럼. 수고하세요.
    아이콘삭제
  • 이상일2003-04-09
    안녕하세요?

    답변 주신내용이 맞는데요. 콜백함수에서 SendMessage(Windows API)를 이용하여 윈도우 메시지를 발생 시키면 EventLoop에서 받아서 처리를 해야 될 것 같은데
    while (IlvEventLoop::getEventLoop()->nextEvent(&message))안으로 들어오질 않네요.

    윈도우 메시지를 발생시키는 다른 ILOG전용의 메소드가 있는지 아니면 그냥 Windows API를 이용해도 되는 건지 ILOG전용 메소드가 있다면 좀 알려주시구요... 그냥 Windows API를 써도 무방하다면 무엇이 잘못되었는지 좀
    알려주시면 감사하겠습니다.

    그럼 답변을 바라면서 좋은 하루되세요.
    아이콘삭제

댓글 입력