트레이 영역 구하는 함수 - GetTrayWndRect
개발 2007. 8. 12. 00:11336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
윈도우의 트레이 영역을 구하는 함수이다.
윈도우가 트레이로 최소화 될때 DrawAnimatedRects(m_hWnd, IDANI_CAPTION, rcFrom, rcTo); 함수를 이용하면 최소화 되는 것처럼 트레이 영역으로 이동하는 것을 볼 수 있다.
void GetTrayWndRect(RECT *pRect)
{
HWND hwndTaskBar=::FindWindow(_T("Shell_TrayWnd"), NULL);
if (hwndTaskBar){
HWND hwndTray=::FindWindowEx(hwndTaskBar, NULL, _T("TrayNotifyWnd"), NULL);
if (hwndTray)
::GetWindowRect(hwndTray, pRect);
else
{ //tray부분을 못찾으면 task바의 구석탱이를 그렇다고 믿게 하자.
::GetWindowRect(hwndTaskBar, pRect);
pRect->left=pRect->right-20;
pRect->top=pRect->bottom-20;
}
}
else
{ //task바를 못찾으면 그냥 화면 하단부
int nWidth = GetSystemMetrics(SM_CXSCREEN);
int nHeight = GetSystemMetrics(SM_CYSCREEN);
SetRect(pRect, nWidth-40, nHeight-20, nWidth, nHeight);
}
}
{
HWND hwndTaskBar=::FindWindow(_T("Shell_TrayWnd"), NULL);
if (hwndTaskBar){
HWND hwndTray=::FindWindowEx(hwndTaskBar, NULL, _T("TrayNotifyWnd"), NULL);
if (hwndTray)
::GetWindowRect(hwndTray, pRect);
else
{ //tray부분을 못찾으면 task바의 구석탱이를 그렇다고 믿게 하자.
::GetWindowRect(hwndTaskBar, pRect);
pRect->left=pRect->right-20;
pRect->top=pRect->bottom-20;
}
}
else
{ //task바를 못찾으면 그냥 화면 하단부
int nWidth = GetSystemMetrics(SM_CXSCREEN);
int nHeight = GetSystemMetrics(SM_CYSCREEN);
SetRect(pRect, nWidth-40, nHeight-20, nWidth, nHeight);
}
}