|
한가지 꽁수가 생각나서..
안전모드와 정상모드가 무엇이 틀린지는 모르지만.. 안전모드는 640*480 해상도에 16컬러로 알고 있습니다. 만약 안전모드가 256 컬러까지 지원을 한다면 (저도.. 각각의 윈도우는 다 안써봐서 모르겠습니다) 아래의 if(itColor < 8) 부분을 if(itColor <=8) 로 고쳐주시면 됩니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(GetSafeMode()) ShowMessage("안전 모드");
else ShowMessage("정상 모드");
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::GetSafeMode()
{
HDC hdDC;
int itColor;
hdDC = GetDC(0);
try {
itColor = (GetDeviceCaps(hdDC, PLANES) * GetDeviceCaps(hdDC, BITSPIXEL));
} __finally {
ReleaseDC(0, hdDC);
}
// 8비트(256 컬러)보다 낮고, 해상도가 640이면 안전모드
if(itColor < 8 && Screen->Width <= 640) return(true);
else return(false);
}
//---------------------------------------------------------------------------
gongnim 님이 쓰신 글 :
: 현재 상태가 안전모드인지 정상모드인지 알수 있는 방법이 뭐가 있을까요?
: MSDN을 뒤져도 못찾겠네여
|