본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

MFC . 응답없음 해결책 . PeekMessage , DispatchMessage

by i.got.it 2022. 3. 5.

 

응답없음 

 

MFC 대화상자든 일반 응용프로그램이든 처리량이 많은 것을 루프문에서 실행시 해당 처리가 완료되기 전까지는 사용자 마우스 입력 키보드 입력등이 처리되지 못하고 먹통처럼 보이고 프로그램 타이틀에 응답없음 이라는 표시가 보인다. 

 

해결방법. 

처리 루프 안에 PeekMessage 로 메시지 여부 점검하여 처리할것 있다면 UI 관련 처리도 수행하도록 한다. 

 

 

 



void function_processing()
{

for(,,,){
 Forced_MessageHandler(); // 이것 호출되면 마우스, 키보드 입력등의 처리 수행됨.
 
 //처리할것들.이것저것 

}


}

void Forced_MessageHandler()
{
	MSG msg;
	// GetMessage 는 메시지 수신될때까지 대기 하기 때문에 무한대기에 빠진다.사용하지 마라. while( GetMessage(&msg,this->m_hWnd,NULL,NULL))
	while (TRUE == PeekMessage(&msg, GetSafeHwnd(), NULL, NULL, PM_REMOVE))// 메시지 있다면 TRUE 반환. 없다면 FALSE 반환. 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

 

 

 

 

 

 

 


첫 등록 : 2022.03.05

최종 수정 : 

단축 주소 : https://igotit.tistory.com/3527


 

 

 

 

 

 

 

 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5