C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[25246] 일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다...
cloudia [] 715 읽음    2003-04-17 07:20
안녕하세요... 매번 도움만 받고 가네요...

이틀동안 정말 미스테리어스한 문제 때문에 골치를 썪고 있습니다.

폼 클래스 내의 멤버함수가 아닌 일반 함수에서 동적으로 폼을 생성했을때

윈도 프로시저가 생성된 폼에 제대로 물리지 않는 문제거든요...

예를 들어 이런 코드입니다.

void OnGetMsg(PPDSMSG pMsg)
{
    TMsgForm* NewMsgForm = new TMsgForm(NULL);
    NewMsgForm->Show();
}

OnGetMsg 라는 함수는 통신 모듈에서 쓰이는 이벤트 핸들러 함수로... 함수 포인터를 넘겨줘야 하는 문제로 클래스의 멤버 함수로 선언할 수 없더라구요...
아무튼 위의 코드로 실행하면, 메세지 도착 이벤트 패킷이 전달되었을 때 메세지 폼이 화면 상에 뜨지만 마우스 입력을 받지 못합니다.
spy++로 조사해 보면 '윈도 프로시저: [사용할 수 없음]'이라고 나옵니다.

그런데 위의 기능을 폼 위에 올려놓은 버튼을 클릭했을 때 처리되도록 멤버함수로 만들면 폼이 제대로 동작합니다. 바로 아래 코드입니다.

void __fastcall TMainForm::Button1Click(TObject* Sender)
{
    TMsgForm* NewMsgForm = new TMsgForm(NULL);
    NewMsgForm->Show();
}

혹시나 해서 폼을 통해 간접 호출을 해보았습니다.

void OnGetMsg(PPDSMSG pMsg)
{
    MainForm->Button1Click(NULL);
}

이렇게 간접 호출을 해도... 처음 결과와 마찬가지로 폼의 윈도 프로시저가 제대로 동작하지 않습니다.

정말 어떻게 해결해야 되나요... 복잡한 문제라 어떻게 검색해야 할 지도 모르겠고...

정말 쓸데없는 문제 때문에 시간만 축내고 있으니 답답할 따름입니다...

제발 답변을 부탁드립니다.



+ -

관련 글 리스트
25246 일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다... cloudia 715 2003/04/17
32334     Re:일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다... Julien 671 2003/04/17
32333     Re:일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다... cloudia 656 2003/04/17
32332     Re:일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다... 정성훈.해미 675 2003/04/17
32331     Re:일반 함수에서 동적으로 생성한 폼에서 메세지를 받아들이지 못합니다... 정성훈.해미 699 2003/04/17
25297     [자답] SendMessage()를 이용하면 됩니다... cloudia 1107 2003/04/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.