Что ж, потратив некоторое время на это, вот код, который, кажется, возвращает реальную ширину границы (если кому-то это понадобится):
NONCLIENTMETRICS ncm;
OSVERSIONINFO OS;
OS.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
GetVersionEx (&OS);
if (OS.dwMajorVersion < 6)
{
ncm.cbSize = sizeof (ncm) - sizeof(ncm.iPaddedBorderWidth);
SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0);
BorderWidth = ncm.iBorderWidth;
}
else
{
ncm.cbSize = sizeof (ncm);
SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0);
BorderWidth = ncm.iBorderWidth + ncm.iPaddedBorderWidth;
}
Полагаю, в нем все еще есть какой-то глюк, но он приемлем для меня :)) Глюк, о котором я знаю, заключается в том, что он вычисляет ширину границы значительного окна, если у вас есть всплывающее окно, оно немного отличается размер (но, например, в XP кажется, что вы не можете установить размер границы всплывающего окна, вы можете сделать это только для большого окна).