웬디의 기묘한 이야기

글 작성자: WENDYS
반응형

카카오톡 쪽지 또는 백그라운드 작업 후 완료되었음을 사용자에게 알려주기 위한 방법 중에 한 가지입니다.

해당 기능을 위해서는 FlashWindowEx라는 API를 사용하게 됩니다.

MSDN을 참고하게 되면 다음과 같은 설명이 있습니다.

 

FlashWindowEx function

Flashes the specified window. It does not change the active state of the window.

즉, 작업표시줄에 지정된 윈도를 깜빡이게 하지만 창을 활성화 화지는 않는다는 얘기죠

 

해당 API를 사용하면서 주의하실 점

 

Typically, you flash a window to inform the user that the window requires attention but does not currently have the keyboard focus. When a window flashes, it appears to change from inactive to active status. An inactive caption bar changes to an active caption bar; an active caption bar changes 

 

즉, 이미 포커스를 갖고 있는 윈도에 대해서는 해당 기능이 동작하지 않습니다.

 

그렇다면 어떻게 사용하는지 샘플을 볼까요?

 

START SAMPLE


//
// 사용자 확인 시점까지 깜빡이기
//
  
FLASHWINFO fi;
fi.cbSize = sizeof(FLASHWINFO);
fi.hwnd = this->m_hWnd;
fi.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG;
fi.uCount = 0;
fi.dwTimeout = 0;
::FlashWindowEx(&fi);
 

 

다음과 같이 사용한 경우 사용자가 작업표시줄 아이콘을 클릭할 때까지 깜빡이게 되며, dwFlags를 통하여 1회만 깜빡이게 할지 for문 등을 이용해 특정 시간마다 깜빡이게 할지 조절할 수 있습니다.

 

구조체 정보 중 Flags는 다음 페이지에서 확인할 수 있습니다.

 

만약 무제한 깜빡이는 옵션을 주었지만 취소하고 싶은 경우는 다음과 같이 STOP Flags를 적용하여 깜빡임을 중지할 수 있습니다.

STOP SAMPLE


  //
  // flash stop.
  //

  FLASHWINFO fi;
  fi.cbSize = sizeof(FLASHWINFO);
  fi.hwnd = this->m_hWnd;
  fi.dwFlags = FLASHW_STOP;
  fi.uCount = 0;
  fi.dwTimeout = 0;
  ::FlashWindowEx(&fi);
 

 

 

반응형