#include #include #include #define SIZEOF_DEVMODEW_300 188 #define SIZEOF_DEVMODEW_400 212 #define SIZEOF_DEVMODEW_500 220 START_TEST(EnumDisplaySettings) { DEVMODEW dm; HDC icDisplay; /* TODO: test with a printer driver */ icDisplay = CreateICW(L"DISPLAY", NULL, NULL, NULL); ok(icDisplay != NULL, "\n"); dm.dmDriverExtra = 0x7777; /* Try ridiculous size */ dm.dmSize = 0x8888; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); ok(dm.dmDriverExtra == 0, "%d\n", dm.dmDriverExtra); /* Try a tiny size */ dm.dmSize = 4; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); /* Something in between */ dm.dmSize = (SIZEOF_DEVMODEW_300 + SIZEOF_DEVMODEW_400) / 2 ; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); /* WINVER < 0x0400 */ dm.dmSize = SIZEOF_DEVMODEW_300; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); /* WINVER < 0x0500 */ dm.dmSize = SIZEOF_DEVMODEW_400; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); /* "Modern" windows */ dm.dmSize = SIZEOF_DEVMODEW_500; ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n"); ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL)); ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize); DeleteDC(icDisplay); }