안녕하세요.. 김영욱입니다.
코딩을 하다보면 특정한 화면 해상도(비디오모드)에서 작성, 유저들에게 배포해야 하는 경우가 있습니다.
유저마다 고유의 해상도를 사용하기 때문에 일일이 대응하기가 힘들죠..
저도 그것 때문에 고생좀 했는데요.... (예전엔 각 표준모드마다 디자인의 위치를 맞춰야하는 노가다...)
코딩시의 해상도를 유저의 화면에서도 같은 해상도로 변경하고 프로그램이 종료시에 원래의 유저의
해상도로 맞추어주면 간단히 해결됩니다. 저도 이 방법을 사용하고 있습니다.
(출처:C++ 빌더 4 바이블 : 정우철)
//모드변경시...
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DEVMODE Mode;
ZeroMemory(&Mode, sizeof(Mode));
Mode.dmSize = sizeof(Mode);
Mode.dmPelsWidth = 1024; <-- 변경해줄부분(Screen Width)
Mode.dmPelsHeight = 768; <-- 변경해줄부분(Screen Height)
Mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT ;
int result = ChangeDisplaySettings(&Mode,0);
if(result == DISP_CHANGE_RESTART)
MessageDlg("You Have To Restart Windows",
mtError,TMsgDlgButtons()<<mbOK,0);
else if(result == DISP_CHANGE_SUCCESSFUL)
MessageDlg("Welcome To the new video mode",
mtInformation,TMsgDlgButtons()<<mbOK,0);
else
MessageDlg("Sorry, cannot change display mode",
mtInformation,TMsgDlgButtons()<<mbOK,0);
}
//원상태 복귀
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ChangeDisplaySettings(0,0);
}
|