こんにちは。
Delphi初心者です。
フルスクリーンにするには、
どうすればよいでしょうか?
なにをですか…?
すみません。
Formをフルスクリーンにして、
BITBLTで絵を貼り付けるのですが。
BorderStyleをbsNoneにして、画面をScreenオブジェクトの値に合わせれば、
とりあえずできそうな気がします。
それではだめでしょうか?
返事ありがとうございました。
ついでに、画面の解像度の変更するのもいいかもしれません。
以下コピペ
var
ScrW: Integer; // Screen Width
ScrH: Integer; // Screen Height
ScrC: Integer; // Screen Color (Bit/Pixel)
RRate: Integer; // Refresh Rate
ChgFlag: Boolean; // 変更フラグ
procedure TForm1.FormCreate(Sender: TObject);
var
hDC: THandle;
OSVer: TOSVersionInfo; // OSバージョン情報
begin
// OSバージョンチェック
OSVer.dwOSVersionInfoSize := Sizeof(TOSVersionInfo);
GetVersionEx(OSVer);
// 画面情報を得る
hDC := GetDC( 0 );
ScrW := GetDeviceCaps( hDC, HORZRES );
ScrH := GetDeviceCaps( hDC, VERTRES );
ScrC := GetDeviceCaps( hDC, BITSPIXEL ) *
GetDeviceCaps( hDC, PLANES );
if OSVer.dwPlatformId = VER_PLATFORM_WIN32_NT then
// NTならば現在のリフレッシュレートを得る
RRate := GetDeviceCaps( hDC, VREFRESH )
else
RRate := 1; // default refresh rate
ReleaseDC( 0, hDC );
ChgFlag := False; // 変更なし
end;
(* 640 x 480 モード *)
procedure TForm1.Button1Click(Sender: TObject);
var
DevMode: TDeviceModeA;
begin
DevMode.dmSize := Sizeof(TDeviceModeA);
DevMode.dmBitsPerPel := ScrC;
DevMode.dmPelsWidth := 640;
DevMode.dmPelsHeight := 480;
DevMode.dmDisplayFrequency := 1; // 面倒なのでdefaultを採用
DevMode.dmFields := DM_PELSWIDTH or
DM_PELSHEIGHT or
DM_BITSPERPEL or
DM_DISPLAYFREQUENCY;
ChangeDisplaySettings(DevMode,0);
ChgFlag := True; // 変更あり
end;
(* 元のモードに戻す *)
procedure TForm1.Button2Click(Sender: TObject);
var
DevMode: TDeviceModeA;
begin
if ChgFlag = True then
begin
DevMode.dmSize := Sizeof(TDeviceModeA);
DevMode.dmBitsPerPel := ScrC;
DevMode.dmPelsWidth := ScrW;
DevMode.dmPelsHeight := ScrH;
DevMode.dmDisplayFrequency := RRate;
DevMode.dmFields := DM_PELSWIDTH or
DM_PELSHEIGHT or
DM_BITSPERPEL or
DM_DISPLAYFREQUENCY;
ChangeDisplaySettings(DevMode,0);
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
DevMode: TDeviceModeA;
begin
if ChgFlag = True then
begin
DevMode.dmSize := Sizeof(TDeviceModeA);
DevMode.dmBitsPerPel := ScrC;
DevMode.dmPelsWidth := ScrW;
DevMode.dmPelsHeight := ScrH;
DevMode.dmDisplayFrequency := RRate;
DevMode.dmFields := DM_PELSWIDTH or
DM_PELSHEIGHT or
DM_BITSPERPEL or
DM_DISPLAYFREQUENCY;
ChangeDisplaySettings(DevMode,0);
end;
end;
解決しました。
ツイート | ![]() |