我正试图让Windows屏幕方向将一个复活节彩蛋放入游戏中,当显示器颠倒时会发生。
我知道小提琴存在,但这不是我问过的问题。如果无法在Win32API中完成,请告诉我,我将放弃这个小功能。
此外,免责声明,Ruby对我来说并不是最熟悉的语言,但我喜欢学习和克服挑战,所以要把它带上。
class DisplayData < Struct.new(:dmFields)
def initialize(dmFields=1); super end
end
def Win32API.orientation
data = DisplayData.new()
getDisplaySettings = Win32API.new('user32','EnumDisplaySettingsEx','%w(P I P)', 'l')
getDisplaySettings.call("", -1, (data.object_id << 1))
return data.dmFields
end
我觉得我很亲近,我只是觉得我错过了一些大的东西或者没有理解正确的东西。
编辑1:要检测的倒置屏幕应该是运行应用程序的屏幕。如果我已正确理解这一点,解析nil值将返回运行应用程序的屏幕的屏幕设置。
在C ++中代码将是这样的:
DEVMODE devMode;
RtlSecureZeroMemory(&devMode, sizeof(DEVMODE));
devMode.dmSize = sizeof(DEVMODE);
devMode.dmFields = DM_DISPLAYORIENTATION;
BOOL result = EnumDisplaySettingsEx(NULL, ENUM_CURRENT_SETTINGS, &devMode, EDS_RAWMODE);
if (result)
{
DWORD displayOrient = devMode.dmDisplayOrientation; // Get display device orientation
}
和
要确定显示方向是纵向还是横向,请检查dmPelsWidth与dmPelsHeight的比率。