1.요약
윈앰프에서 보면 TaskBar와 SystemTray에 동시에 보여주는 모드 혹은 각각 보여주는 모드 그리고 모두 보여주지 않는 모드가 있습니다. 4가지의 기능을 모두 구현해 보도록 하겠습니다.
2.본문
윈앰프의 기능을 살펴보기 위해서 일단 Spy++로 윈앰프를 선택하신후, 메세지는 WS_SHOWWINDOW 와 WS_STYLECHANGED 만을 선택합니다. 일반적으로 윈도우의 속성일 바뀔때 위의 메세지가 발생합니다. 그리고 나서 속성을 여러번 바꾸어 보면 아래의 표와 같습니다.
TaskBar 를 보여주기 --> WS_EX_TOOLWINDOW 속성(0x0080)을 뺀다.
TaskBar 에서 감춘다 --> WS_EX_TOOLWINDOW 속성(Ox0080)을 넣는다.
SystemTray에서 감춘다 --> SystemTray 의 HideIcon()을 호출한다.
SystemTray에서 보여준다 --> SystemTray의 ShowIcon()을 호출한다.
방법은 간단하고, 핵심은 ToolWindow 속성이 TaskBar에서 Icon을 감춘다는 속성에 있습니다. 아래의 예제를 참고해 보세요.
3.예제
//*****************************************************************************
// CShowOnlyTrayDlg::OnTaskonly()
// Purpose: [ TaskBar에만 보여준다.]
// Parameters:
// Returns: none
//*****************************************************************************
void CShowOnlyTrayDlg::OnTaskonly()
{
ShowWindow(SW_HIDE);
SetWindowLong(m_hWnd, GWL_EXSTYLE , 0x0110);
m_TrayIcon.HideIcon();
ShowWindow(SW_SHOW);
}
//*****************************************************************************
// CShowOnlyTrayDlg::OnSystemOnly()
// Purpose: [ SystemTray Icon 만 보여준다. ]
// Parameters:
// Returns: none
//*****************************************************************************
void CShowOnlyTrayDlg::OnSystemOnly()
{
ShowWindow(SW_HIDE);
SetWindowLong(m_hWnd, GWL_EXSTYLE , 0x0190);
ShowWindow(SW_SHOW);
m_TrayIcon.ShowIcon();
}
//*****************************************************************************
// CShowOnlyTrayDlg::OnSystemTaskbar()
// Purpose: [ SystemTray Icon과 TaskBar를 모두 보여준다. ]
// Parameters:
// Returns: none
//*****************************************************************************
void CShowOnlyTrayDlg::OnSystemTaskbar()
{
ShowWindow(SW_HIDE);
SetWindowLong(m_hWnd, GWL_EXSTYLE , 0x0110);
m_TrayIcon.ShowIcon();
ShowWindow(SW_SHOW);
}
//*****************************************************************************
// CShowOnlyTrayDlg::OnNone()
// Purpose: [ SystemTray Icon 과 TaskBar를 모두 감춘다. ]
// Parameters:
// Returns: none
//*****************************************************************************
void CShowOnlyTrayDlg::OnNone()
{
ShowWindow(SW_HIDE);
SetWindowLong(m_hWnd, GWL_EXSTYLE , 0x0190);
m_TrayIcon.HideIcon();
ShowWindow(SW_SHOW);
}
'C & C++ > MFC 컨트롤' 카테고리의 다른 글
[MessageBox] 메시지 상자 사용법 (0) | 2011.03.27 |
---|---|
[List] 리스트 컨트롤에 다른 컨트롤 넣기 (1) | 2011.03.27 |
[공통] 컨트롤에 ToolTip 넣기 (0) | 2011.03.27 |
[Edit] 한글입력을 받고싶지 않을때 (0) | 2011.03.27 |
[Tip] 트레이 아이콘 사라지는 버그 (0) | 2011.03.27 |
댓글