最近我需要以编程方式更改屏幕分辨率,按照 YouTube 中的示例,我为一个构造函数创建了一个库,它实际上接受了高度和宽度以及屏幕分辨率,一切正常,但我还需要获得所有允许的监视器分辨率,这里出现了一个问题:
屏幕.cpp:
#include "pch.h"
#include "Screen.h"
#include <iostream>
#include <list>
using namespace std;
void Screen::Resize(int width, int height)
{
DEVMODE dm;
dm.dmSize = sizeof(DEVMODE);
dm.dmPelsWidth = width;
dm.dmPelsHeight = height;
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dm, CDS_UPDATEREGISTRY);
}
list<int> Screen::Width()
{
list<int> width;
DEVMODE dm = { 0 };
dm.dmSize = sizeof(dm);
for (int i = 0; EnumDisplaySettings(NULL, i, &dm) != 0; i++)
{
width.push_back(dm.dmPelsWidth);
}
return width;
}
屏幕.h:
class __declspec(dllexport) Screen {
public:
void Resize(int width, int height);
list<int> Width();
};
extern "C" __declspec(dllexport) void Resize(int width, int height){}
extern "C" __declspec(dllexport) list<int> Width_Return() { return Width(); }
最后一行有问题,首先,我如何返回函数的返回值Width(),因为在这种情况下会发生错误,其次,声明Width_Return()抛出我这个:声明与“Width_Return”不兼容(在线声明“C:\USERS\ROMAN\DOCUMENTS\PROJECTS\SCREEN.SIZE\SCREEN.SIZE\Screen.h”中的 9 个)。我是 C++ 的完全新手,我接受了它,不要以此来严格判断。
你为什么不与第一个类比发布第二个公告?为什么在第一种情况下h的函数内部没有可执行代码,而在第二种情况下调用Width?通常在 h 中只有函数声明和 cpp 中的定义。