19 окт. 2009 г.

Мелочи

Список рабочих столов привязан к разрешению экрана. Понятно, что на мониторе 1600х1200 окошки можно разместить совсем по другому, чем на 800х600. Из-за маниакального стремления сэкономить одно (!) поле, вместо количества пикселов по горизонтали и вертикали, мы храним одно число — их произведение.
function GetScreenRes: Integer;
var
  DC: HDC;
begin
  DC := GetDC(0);
  try
    Result := GetDeviceCaps(DC, HORZRES) 
      * GetDeviceCaps(DC, VERTRES);
  finally
    ReleaseDC(0, DC);
  end;
end;
Проблема в том, что некоторые разрешения дают одинаковое произведение на выходе, а ведь изначально так просто было решить эту проблему:
... 
Result := GetDeviceCaps(DC, HORZRES) * 100000 
  + GetDeviceCaps(DC, VERTRES);
...

Комментариев нет:

Отправить комментарий