C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49790] Re:함수가 실행되는 동안에는 메시지를 안받게 할려면 어떻게 해야 할까요?
장성호 [nasilso] 1120 읽음    2007-07-03 14:39
a()
{
    for(int i=0;i<20;i++)   Sleep(100);
}

//---------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     a();
     MSG mes;
     while ( PeekMessage(&mes, Edit1->Handle , WM_KEYDOWN, WM_KEYDOWN, PM_REMOVE ) == TRUE );
}
//---------------------------------------------------------------------------

//PeekMessage( (&mes, Edit1->Handle ,  WM_KEYFIRST, WM_KEYLAST) ; // 키보드에 관한 모든 메세지 삭제
//PeekMessage( (&mes, Edit1->Handle , 0, 0) // 모든 메세지 삭제
//PeekMessage( (&mes, Edit1->Handle , WM_MOUSEFIRST, WM_MOUSELAST) ; // 마우스에 관한 모든 메세지 삭제


그럼 즐겁게 ....


이용태 님이 쓰신 글 :
: WM_KEYDOWN이 발생하면 a()라는 함수가 실행됩니다.
:
: 근데.. 키보를 계속 누르고 있으면 WM_KEYDOWN메시지가 계속 발생할꺼고.. 메시지큐에 쌓이게 될겁니다.
:
: 그럼 a()라는 함수가 종료되면.. 그동안 쌓여있던 WM_KEYDOWN메시지가 처리될꺼고 a()가 다시 실행이 되는걸로 압니다.
:
: 그런데 문제는 a()가 실행되는 시간이 조금 됩니다. 대략 2초 정도 되는데요...
:
: a()가 실행되는 2초 동안에는 WM_KEYDOWN을 받아들이지 않게끔 할려고 합니다. 즉 a()가 실행되면서 받아들이는 WM_KEYDOWN 받지 않고 있다가, a()가 실행이 끝난 후에 WM_KEYDOWN를 받아 a()를 다시 실행시키고자 하는거죠..
:
: 아니면 다른 방법으로.. a()가 실행되는 동안 WM_KEYDOWN를 메시지 큐에 쌓아놓되, a()가 끝나면 메시지 큐를 비워버리는 방법도 괜찮을거 같기도 합니다.
:
: 서브클래싱을 해서 해결해볼려고 했지만 안되더군요...;;;
:
: 어떤 방법으로 하는것이 좋을지 답변 부탁드립니다.

+ -

관련 글 리스트
49788 함수가 실행되는 동안에는 메시지를 안받게 할려면 어떻게 해야 할까요? 이용태 989 2007/07/03
49790     Re:함수가 실행되는 동안에는 메시지를 안받게 할려면 어떻게 해야 할까요? 장성호 1120 2007/07/03
49793         Re:Re:함수가 실행되는 동안에는 메시지를 안받게 할려면 어떻게 해야 할까요?(자답) 이용태 1274 2007/07/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.