Как получить высоту нижней строки меню windows mobile 6.5.3 - PullRequest
1 голос
/ 20 июня 2010

Есть ли какой-нибудь возможный способ получить высоту нижней строки меню - той, в которой находится меню "Пуск" - в Windows Mobile 6.5.3? Я могу получить высоту верхней строки меню разными способами, например, используя функцию SystemParametersInfo и отправив SPI_GETWORKAREA в качестве ее параметра uiAction, или используя функцию GetMonitorInfo, но все эти функции могут помочь вычислить высоту верхней строки меню.

В предыдущих версиях Windows Mobile высота верхней и нижней полос была стандартной, 26 пикселей для устройств QVGA и 52 для устройств VGA, но это не так в Windows Mobile 6.5.3, где верхняя полоса имеет высота 18, а нижняя только Бог знает пока:)

Заранее благодарю за любую помощь.

Айман

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010
Rectange toolBarRect = GetWindowRect(toolBar.Handle);
0 голосов
/ 14 октября 2010

На самом деле она называется нижней панелью задач.

hTBWnd = FindWindow (_T ("HHTaskBar"), NULL)

Это дает вам дескриптор к панели задач. Затем вы можете использовать GetWindowRect, чтобы получить четыре угла панели задач и рассчитать высоту, вычтя сверху вниз. Если HHTaskBar не найден, лоток может работать.

HWND hTBWnd;
RECT windowRect;

hTBWnd = FindWindow(_T("HHTaskBar"), NULL);
if (hTBWnd != NULL) 
{
  GetWindowRect(hwnd, &windowRect);
  CString csLongAsString;
  csLongAsString.Format( _T( "Height: %ld" ), windowRect.bottom - windowRect.top );
  MessageBox(NULL, csLongAsString, _T("HHTaskBar"), MB_OK);
  return(0);
} else
{
  hTBWnd = FindWindow(_T("Tray"), NULL);
  if (hTBWnd != NULL) 
  {
    GetWindowRect(hwnd, &windowRect);
    CString csLongAsString;
    csLongAsString.Format( _T( "Height: %ld %ld" ), windowRect.bottom, windowRect.top );
    MessageBox(NULL, csLongAsString, _T("Tray"), MB_OK);
  } else 
  {
    MessageBox(NULL, _T("Window get failed"), _T("FAILED TO FIND WINDOW"), MB_OK);
    return(0);
  }
}
...