반응형


http://goo.gl/APjgQ




 스레드 돌릴시.. SetWindowText 문제  | VC++ 일반2012-01-09 오후 5:08:58
김정수 (sepirin)  김정수님께 메시지 보내기김정수님을 내 주소록에 추가합니다.김정수님의 개인게시판 가기

표준시간대 출력을 해보려고 스레드로 시간대 출력을 걸어놨는데요.

 

 
void CWnd::SetWindowText(LPCTSTR lpszString)
{
ENSURE(this);
ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
 
if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
 
굵게 표시한 부분에서 계속 에러가 납니다. 핸들 문제 같기도 하고.. 아리송하네요.
 
스레드에서는 요렇게 비교해서 셋하도록 했는데요.
 
if(cszPreTime.Compare(cszNowTime) < 0) pExcom->m_ctrlTime.SetWindowTextW(cszNowTime);
 

문제가 있을까요?

      
[채택답변] !


2012-01-09 오후 5:30:20
 질문자 인사 :친절한 답변 감사드려요~^^
  박명정 (kingsky)  박명정님께 메시지 보내기박명정님을 내 주소록에 추가합니다.박명정님의 개인게시판 가기   

네 당연히 문제 있습니다.

스레드에서 그리기 관련 함수를 호출하면 이런 문제에 봉착하게 됩니다.

주의 하세요.

문제를 해결하려면...

문자열 변수를 만들어 거기에 시간을 세팅하시고..

타이머에서 값을 적용하도록 하시든가...

아니면

문자열 변수를 만들고 값을 세팅 한 다음에...

사용자 메시지를 PostMessage()로 날려 거기서 세팅하도록 하세요.

 [답변]...2012-01-09 오후 5:18:45
이상준 (iduser)  이상준님께 메시지 보내기이상준님을 내 주소록에 추가합니다.이상준님의 개인게시판 가기  

스레드 내에서 처리하면 그러한 현상이 빈번하게 나옵니다.

 

SendMessge로 처리하거나.. Timer를 추가해서 출력하도록 하는 것이 낫습니다.

반응형

+ Recent posts