Application/MFC

[MFC] 해상도 및 주사율 설정하기 (EnumDisplaySettings)

devsalix 2023. 2. 2. 11:54
728x90

윈도우의 해상도 및 주사율을 설정하고 싶다면

 

EnumDisplaySettings 함수를 사용하시면 됩니다

 

간단하게 최대 해상도와 최대 주사율을 설정 하고 싶다면

 

아래와 같이 코드를 짜면 됩니다

 

void SetResolution()
{
	double dMaxValue = 0;
	int iMaxModeNumber = 0;
	int iModeCount = 0;

	DEVMODE dm = { 0 };
	dm.dmSize = sizeof(dm);

	//해상도 및 주사율 리스트 검색
	while(EnumDisplaySettings(NULL, iModeCount, &dm) != 0)
	{
		//찾은 해상도 및 주사율 보다 크다면 해상도 및 주사율 리스트 인덱스 설정
		if(nMaxValue < ((double)dm.dmPelsWidth * (double)dm.dmPelsHeight * (double)dm.dmDisplayFrequency))
		{
			nMaxValue = (double)dm.dmPelsWidth * (double)dm.dmPelsHeight * (double)dm.dmDisplayFrequency;
			iMaxModeNumber = iModeCount;
		}

		iModeCount++;
	}

	//현재 해상도 및 주사율 가져오기
	if(EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm) > 0)
	{
		//현재 해상도 및 주사율의 값이 검색된 값과 다르다면
		if(nMaxValue != ((double)dm.dmPelsWidth * (double)dm.dmPelsHeight * (double)dm.dmBitsPerPel * (double)dm.dmDisplayFrequency))
		{
			//찾았던 인덱스를 기준으로 최대 해상도 값 재 설정
			if(EnumDisplaySettings(NULL, iMaxModeNumber, &dm) > 0)
			{
				//최대 해상도 및 주사율 설정
				ChangeDisplaySettings(&dm, CDS_UPDATEREGISTRY);
			}
		}
	}
}

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형