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

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

by 리치굿맨 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


 

 

 

 

 

 

 

 

 

 

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT