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
[71400] 여러개 날라오는 메세지 처리를 한번만 하고 싶습니다.
ㅇㅇㅇ [] 3060 읽음    2014-06-10 09:23
지정된 폴더의 파일 변화 감지를 위해서 FindFirstChangeNotification()함수를 이용하는 스레드를 만들어서 파일 변화 감지를 하고있습니다.

그러다 파일 변화가 감지되면 리스트컨트롤에 SendMessage()하여 폴더를 갱신하고 있는데요

문제는 내용이 하나만바뀌더라도 필터에 걸리는 내용이 많아서 메세지를 너무 많이 보냅니다.

그러다 보니 불필요한 갱신이 계속돼 0.3초간격으로 메세지를 기달렸다가
"맨 마지막"에 도착한 메세지만 처리하게 하고싶은데 어떤방법이 좋을까요?
메세지를 받을때마다 SetTimer()로 300ms 이후에 발생할 타이머 메세지를 설정하는게 가장 좋을까요?
이 방법에 문제는 300ms 이내의 주기적으로 파일이 변경되면 호출이 안되는 문제점이 생길꺼같은데
좋은방법을 아시는분 방법좀 알려주시길 바랍니다.


대략 설명드리면
//폴더의 파일변화 감지 하는 스레드에서는 파일 변화가 감지되면 메세지를 보낸다.
::SendMessage(pNotify->m_notifyWnd, WM_REQUEST_REFRESH, idx, NULL);

// WM_REQUEST_REFRESH메세지 처리하는 함수
LRESULT CLocalView2::OnRequestRefresh(WPARAM wParam, LPARAM lParam)
{
// 폴더 내용을 갱신한다.
m_pListCtrl->RefreshFolder();

return 0;
}

현재 감지되는 필터는 총 5개입니다.
FILE_NOTIFY_CHANGE_FILE_NAME
FILE_NOTIFY_CHANGE_DIR_NAME
FILE_NOTIFY_CHANGE_LAST_WRITE
FILE_NOTIFY_CHANGE_SIZE
FILE_NOTIFY_CHANGE_ATTRIBUTES



질문 요약 :   SendMessage()로 날라오는 메세지를 300ms정도 기다렸다가 맨 마지막에 들어온 메세지만 처리하게 하고자 합니다.

+ -

관련 글 리스트
71400 여러개 날라오는 메세지 처리를 한번만 하고 싶습니다. ㅇㅇㅇ 3060 2014/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.