MFC/Microsoft Foundation Class 2010. 11. 10. 09:17

Thread안에서 Updatedata 에러!!

Thread안에서 부모다이얼로그의 포인터로 UpdateDate를 하면 ASSERT에러가 발생한다.

해결방법은 MESSAGE를 이용하여 UpdateData하는 방법이 있다.

 

#define  THREAD_UPDATE (WM_USER+1) // 선언후

ON_MESSAGE(THREAD_UPDATE,OnThreadUpdate) //메세지 맵에 추가

//업데이트 필요시 THREAD_UPDATE를 인자로 메세지를 보내면 해당 함수 호출

afx_msg LRESULT CFileDlg::OnThreadUpdate(WPARAM w,LPARAM l)
{
 UpdateData(FALSE);
 return 0;
}

CDENT_MSG_CLIENTDlg* dlg = GetPointerDLG(m_pWnd);

             dlg->SendMessage(THREAD_UPDATE,0,0);

 

:
MFC/Microsoft Foundation Class 2010. 11. 10. 08:58

int GetFindCharCount(CString msg,char find_char)
{
 int msg_len = msg.GetLength();
 int find_cnt = 0;
 
 for(int i =0 ; i<msg_len ; i++)
 {
  if(msg[i] == find_char)
  {
   find_cnt++;
  }
 }
 return find_cnt;  
}

문자열을 합쳐서 전송받았을때 구분자의 갯수를 알아 낼 때 사용했다...

구분자로 쪼개는 함수는
AfxExtractSubString(쪼개낸 데이터를 저장할CString형 인자,원본파일,인덱스,구분자);

ex)AfxExtractSubString(Send_file_name,bufdate,0,'/');
:

부모핸들 값을 가지고 바로 접근하여 사용해보니 에러...

ex) m_pWnd->ReceiveMSG(this)

->무슨 윈도우핸들값 리턴이 잘못 되었다고 인터넷에서 찾음..

결론은 처음으로 돌아가서 ... 차례로 접근

((CM-ServerDlg*)AfxGetApp()->m_pWnd)->ReceiveMsg(this);

->된다..

'Sunmoon_BIT > Microsoft Foundation Class' 카테고리의 다른 글

M3(2)  (0) 2010.11.03
M3(1)  (0) 2010.11.03
Updatedata() 함수  (0) 2010.03.12
객체간의 통신  (0) 2010.03.04
MFC 전역함수  (0) 2010.03.04
: