Modaless Dialog 창조하기

조회수 438회

제가 요즘 Card게임을 mfc 로 옮겨보려고 하고 있습니다

형식은 Server(MFC)가 스레드안에서 socket port를 열고 accept()를 기다리다가 들어오면 그 소켓을 파라메터로 새로운 modaless dialog를 생성한다음 그 안에서 소켓통신으로 자료를 주고받는것으로 했습니다.

처음에는 쉬운것으로 여겼었는데.... modaless dialog를 창조한후에는 통상 창문이 움직이지를 않습니다. 물론 그 안에서 저들끼리 소켓으로 주고받는 내용은 화면에 출력됩니다. 아무리 자료조사를 해보아야 잘 알되는군요

코드는 아래의 형식입니다. (코드가 좀 복잡한지라 리해할만큼 표현했습니다)

UINT WINAPI ServThread(LPVOID pParam) {
    socket create
    socket bind
    socket listen
    while(1)
    {
        serversocket.accpet(clientsocket);

        CCardViewDlg *mCardDlg;
        mCardDlg = new CCardViewDlg(this, clientsocket);
        mCardDlg->Create(IDD_CARDVIEW_DIALOG);
        mCardDlg->SetWindowPos(NULL, 0, 0 600, 260, SWP_NOREDRAW);
        mCardDlg->ShowWindow(SW_SHOW);
    }
}

참고로 우의 dialog를 창조하는 코드를 다른곳에서 사용할때는 창문이 제대로 움직이고 잘 풀립니다. (다른곳이란 실례로 Server MFC에서 단추를 누르거나 사건이 일어났을때 호출되는 MFC 성원함수안을 의미합니다.)

도움을 주십시요...

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 뭔가 도움되는 코멘트를 드리고 싶지만 정보도 부족하고 재현을 해볼수도 없다는 것도 문제네요. 일단 제 생각엔 쓰레드 때문에 메세지 펌프 처리가 안되는 것 같습니다. window(창) 메세지 펌프도 무한루프로 메세지 큐를 처리하고 있는데요 마우스 메세지를 처리를 못한다는 것은 메세지 펌프처리가 안된다(큐에 메세지가 안쌓인다거나...일단 화면상의 갱신은 되는 것 같으니...)는 것이겠죠. 정영훈 2019.12.25 18:23

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)