|
계산이 많은, CPU를 많이 사용하는 경우에는 사용자의 키 입력이 안먹히는 경우가 있습니다.
이 경우, 중간 중간에 메세지 큐를 실행 시켜주는 명령을 불러 주세요. 아래는 제가 사용하는 방법인데요.
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---
//--- void __fastcall TFoundation::mfFlushMessageQueue(void)
//---
//--- Message Queue를 비워 준다.
//---
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TFoundation::mfFlushMessageQueue(void)
{
MSG msg ;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
실행 중간 중간에 mfFlushMessageQueue() 를 불러 주면, 사용자 키 입력을 처리할 수 있습니다.
실행가능여부를 설정할 Flag 변수를 하나 지정해 놓고 True로 초기화 합니다.
함수 실행 중에 이 Flag 값을 검사하여 True 인 경우만 동작하게 합니다.
그리고 사용자가 특정 키를 입력되면 이 Flag를 False로 설정하도록 하면 됩니다.
VB 에서는 DoEvents 라는 명령어가 있습니다만, C 에서는 위와 같이 만들어 사용해야 됩니다.
대박전설 님이 쓰신 글 :
: 빌더에서 Cpu가 약 30개 정도 돼는 펑션을 구동돼는 동안에.. 유저가 원하는때 중간 중간 버튼을 이용해서 멈추게 하려고 합니다. 함수 총 실행 시간이 4분 정도 돼는데.. 멈추게 할수있는 방법 없을까요?
:
:
:
|