|
안녕하세요.
TComponent를 상속받아 UDP 컴퍼넌트를 하나 만들려고 합니다.
문제는 WSAAsyncSelect()를 사용하려면 핸들값이 필요한데, 찾아보니 AllocateHWnd()라는 함수를 통해서 얻어올 수 있던데.. 잘 안되서 여쭤봅니다.
class PACKAGE MyUDP : public TComponent
{
//통신관련 된 변수들과 속성 및 이벤트들을 선언해놨습니다.
private :
HANDLE hWnd;
void __fastcall WndProc(Messages::TMessage &Message);
};
클래스는 저렇게 만들어 놓고 생성자에서 AllocateHWnd()를 호출해서 핸들값은 얻어오는데 문제는 없습니다.
__fastcall MyUDP::MyUDP(TComponent *Owner)
{
hWnd = AllocateHWnd(WndProc);
...생략
}
저런 일련의 과정들을 마치고 WSAAsyncSelect()를 호출했습니다.
int ret = WSAAsyncSelect(socket, hWnd, WM_USER + 123, FD_READ);
물론 이 구문도 아무런 문제가 발생하지 않았습니다. 리턴값 받아서 확인했는데 정상이더라구요..
근데 막상 TNMUDP에서 데이터 전송해보면 WndProc()에 진입을 하지 않습니다.
제가 혹시 중요한 무언가를 빠뜨린게 아닌가 해서 선배님들께 조언을 구합니다. 도움좀 부탁드리겠습니다. ㅠㅠ
현재 사용하고 있는 환경은 윈도우7에 C++ Builder 6.0 사용하고 있습니다.
|