|
비주얼이 없는 윈도우는 없습니다..
그냥 감춰놓고 안보이게 쓸뿐
영악한녀석 님이 쓰신 글 :
: TComponent 에는 Handle이라는 멤버는 없었습니다. ㅠㅠ CreateHandle() TWinControl을 상속받아야 하던데.. 그건 비주얼이 있는 컴퍼넌트라서 제가 원하는 바가 아닙니다. ㅠ 도움 감사합니다.
:
: aa 님이 쓰신 글 :
: : 영악한녀석 님이 쓰신 글 :
: : : 안녕하세요.
: : :
: : : 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 사용하고 있습니다.
: :
: :
: : 콤포넌트도 윈도우가 아닌가요? 기본적으로 static 컴포넌트가 아니면 있다고
: : 들엇는데요 없는 콤포넌트의경우 CreateHandle 함수던가 이걸로 생성한다고
: : 들엇는데요 스테틱이 아닌이상 this->Handle 이걸로 가저올수있을거라 보는데요;
|