如何动态改变分辨率?

spacespy 2000-02-22 10:26:00
如何用 ChangeDisplaySettingsA(API) 动态改变分辨率?
请给出具体的程序。多谢!!!
...全文
195 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
am2000 2001-05-21
  • 打赏
  • 举报
回复
在DELPHI中是可以的
spacespy 2000-02-29
  • 打赏
  • 举报
回复
radish:
首先非常感谢你的意见!但是,可否给出在PB中的具体例子,多谢!!!
我在DELPHI中试过虽然可以,但是任务栏却在屏幕的中间.
losed 2000-02-28
  • 打赏
  • 举报
回复
方法很对
radish 2000-02-23
  • 打赏
  • 举报
回复
改变显示分辨率

1、获取当前显示器的显示分辨率

————读取注册表HKEY_CURRENT_CONFIG\Display\Settings下的键BitsPerPixel、Resolution

————或使用如下函数

————bool GetVideoSettings(DEVMODE *devmode)

————{

———— HWND Desk=GetDesktopWindow();

———— HDC hdc=GetDC(Desk);

———— devmode->dmSize=sizeof(DEVMODE);

———— devmode->dmBitsPerpel=GetDeviceCaps(hdc,BITSPIXEL);

———— devmode->dmPelsWidth=GetSystemMetrices(SM_CXSCREEN);

———— devmode->dmPelsHeight=GetSystemMetrices(SM_SYSCREEN);

———— devmode->dmFields=DM_BITSPERPEL and DM_PELSWIDTH and DM_PELSHEIGHT;

———— return true;

———— }

2、枚举系统支持的显示分辨率

————使用系统API函数

————BOOL EnumDisplaySettings( LPCTSTR lpszDeviceName,// specifies the display device

————————DWORD iModeNum, // specifies the graphics mode

————————LPDEVMODE lpDevMode // points to structure to receive settings );

3、改变系统的显示分辨率

————使用系统API函数

————LONG ChangeDisplaySettings(LPDEVMODE lpDevMode, DWORD dwflags );

Flag Meaning 0 The graphics mode for the current screen will be changed dynamically.
CDS_UPDATEREGISTRY The graphics mode for the current screen will be changed dynamically and the graphics mode will be updated in the registry. The mode information is stored in the USER profile.
CDS_TEST The system tests if the requested graphics mode could be set.



1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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