如何动态更改分辨率

ysh 2000-03-21 11:31:00
加精
请问如何在BCB中动态更改屏幕分辨率?
...全文
231 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
风子 2000-03-24
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDeviceMode lpDevMode;
if(EnumDisplaySettings(NULL, 0, &lpDevMode) )
{
lpDevMode.dmPelsWidth=800;
lpDevMode.dmPelsHeight=600;
lpDevMode.dmBitsPerPel=16; //颜色 16,24,32位
bool flag=ChangeDisplaySettings(&lpDevMode,0)==DISP_CHANGE_SUCCESSFUL;
if(flag)
ShowMessage("修改分辨率成功!");
}
}

!@$#$%^%^^%^%^*&*$#$#~!@@
黑屏的时候你可别找我马烦哦!
dengdeng 2000-03-22
  • 打赏
  • 举报
回复
使用API函数.下面是我写的DELPIH的一段代码,你可以参考.

function SetDisplayMode(PelsWidth, PelsHeight, ColorBits: Integer): Integer;
var
DeskDC: HDC;
DeskMode: TDeviceModeA;
Source_Bits, Source_Width, Source_Height: Integer;
begin
DeskDC := GetDC(GetDesktopWindow);
Source_Bits := GetDeviceCaps(DeskDC, BITSPIXEL);
Source_Width := GetDeviceCaps(DeskDC, HORZRES);
Source_Height := GetDeviceCaps(DeskDC, VERTRES);
ReleaseDC(GetDesktopWindow, DeskDC);
if (Source_Bits = ColorBits) and (Source_Width = PelsWidth) and (Source_Height = PelsHeight) then
begin
Result := 0;
Exit;
end;
DeskMode.dmSize := SizeOf(TDeviceModeA);
DeskMode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
DeskMode.dmPelsWidth := PelsWidth;
DeskMode.dmPelsHeight := PelsHeight;
DeskMode.dmBitsPerPel := ColorBits;
Result := ChangeDisplaySettings(DeskMode, CDS_UPDATEREGISTRY);
end;

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧