//---------------------------------------------------------------------------
// 현재 TaskBar가 있는 모니터를 찾아 그 모니터의 인덱스를 돌린다. 물론 멀티모니터인 경우만 효과가 있다.
int TFormMain::FindScreen_InPlace_TarkBar()
{
if (Screen->MonitorCount == 1)
return 0;
HWND hwnd = FindWindow("Shell_TrayWnd", "");
if (hwnd == NULL)
return 0;
TRect taskbar;
GetWindowRect(hwnd, &taskbar);
for(int c = 0; c < Screen->MonitorCount; c++)
{
TMonitor* r = Screen->Monitors[c];
if (taskbar.Width() > taskbar.Height()) // 가로형 작업줄이면
{
if ((r->Left <= taskbar.left) &&
(r->Left + r->Width >= taskbar.right) &&
(r->Top - taskbar.Height() <= taskbar.top) &&
(r->Top + r->Height + taskbar.Height() >= taskbar.bottom)
)
return c;
}
else // 세로형 작업줄이면
{
if ((r->Left - taskbar.Width() <= taskbar.left) &&
(r->Left + r->Width + taskbar.Width() >= taskbar.right) &&
(r->Top <= taskbar.top) &&
(r->Top + r->Height >= taskbar.bottom)
)
return c;
}
}
return 0;
}
//---------------------------------------------------------------------------
|
그냥 WorkArea 와 모니터 크기가 다른경우를 체크했습니다.