怎么改变屏幕的分辨率?

crossfun 2004-06-14 03:24:48
我想让自己的程序在自己想要的分辨率下全屏运行,应该怎么做呢?
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
51touch 2004-07-04
  • 打赏
  • 举报
回复
不外乎两步:
1、改变分辨率到你想要的
2、全屏程序
下面是全屏的程序:
乱码部分是注释,无关大局,没有改了
/********************************************************
* º¯ÊýÃû OnViewFullScreen()
* ²ÎÊý - ÎÞ
* ·µ»ØÖµ - ÎÞ
* ˵Ã÷ È«ÆÁÏÔʾÍøÒ³Îļþ£¬ÒÔÊʺϴ¥ÃþÆÁÌصã
*******************************************************/
void CMainFrame::OnViewFullscreen()
{

LONG style;

if(!m_bFullScreen) //È«ÆÁÄ»ï@ʾģʽ
{

//ë[²Ø¹¤¾ß—lºÍ î‘B™Ú
m_wndStatusBar.ShowWindow(SW_HIDE);
m_wndToolBar.ShowWindow(SW_HIDE);
//È¥µô˜Ëî}™Ú

style=::GetWindowLong(m_hWnd,GWL_STYLE);
style &=~WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
//±£´æÔ­²Ë†ÎááÈ¥µô²Ë†Î

ASSERT(hmenu.GetSafeHmenu()==NULL);
CMenu* pOldMenu=GetMenu();
hmenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);

//±£´æÕý³£Ò•ˆDµÄ´°¿ÚλÖÃÐÅÏ¢ÒÔ±ã»Ö¸´Ô­ î‘B
GetWindowPlacement(&m_wpPrev);
m_wpPrev.length = sizeof(m_wpPrev);
ShowWindow(SW_SHOWMAXIMIZED);
m_bFullScreen = TRUE;
}
else //Õý³£ï@ʾģʽ
{
//„h³ýÈ«ÆÁÄ»¹¤¾ß—l
//m_wndFullScreenBar->DestroyWindow();
//delete m_wndFullScreenBar;
//»ÖÍ²Ë†Î
ASSERT(hmenu.GetSafeHmenu()!=NULL);
SetMenu(&hmenu);
hmenu.Detach();
//»Ö¸´¹¤¾ß—lºÍ î‘B™Ú
m_wndStatusBar.ShowWindow(SW_SHOWNORMAL);
m_wndToolBar.ShowWindow(SW_SHOWNORMAL);
//»ÖÍ˜Ëî}™Ú
style=::GetWindowLong(m_hWnd,GWL_STYLE);
style|=WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
SetWindowPlacement(&m_wpPrev);
ShowWindow(SW_SHOWNORMAL);
m_bFullScreen = FALSE;
}
}
zwlpower 2004-06-17
  • 打赏
  • 举报
回复
那样很简单呀,你的主窗口获得焦点时,启用显示调节(WM_ONFORCE);失去焦点就恢复(WM_KILLFORCE)
GongXiFaCai 2004-06-16
  • 打赏
  • 举报
回复
有参考价值

暗黑帝国 2004-06-16
  • 打赏
  • 举报
回复
你要全屏显示还是要改变分辨率阿?
crossfun 2004-06-16
  • 打赏
  • 举报
回复
这样可以,不过和我的要求有点出入。这样做把整个个屏幕的分辨率都改了,其他程序的分辨率也改了。能不能在我切换到其他程序的时候改回原来的分辨率,切换回我的程序的时候又改回我需要的分辨率?
Kudeet 2004-06-16
  • 打赏
  • 举报
回复
学习啊!
zhucde 2004-06-15
  • 打赏
  • 举报
回复
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=32;//修改为32位颜色
lpDevMode.dmPelsWidth=1024;//分辨率X为1024
lpDevMode.dmDisplayFrequency=85;//刷新率为85HZ
lpDevMode.dmPelsHeight=768;//分辨率Y为768
lpDevMode.dmSize=sizeof(lpDevMode);
lpDevMode.dmFields =DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL|DM_DISPLAYFREQUENCY;


ChangeDisplaySettings(&lpDevMode,1);
enoloo 2004-06-15
  • 打赏
  • 举报
回复
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN); //全屏

可以AfxGetMainWnd() ->MoveWindow(0,0,width,height);设置窗口。
/////
或者用

AfxGetMainWnd()->SendMessage(WM_SYSCOMMAND,(WPARAM)SC_MAXIMIZE,0);

如果想窗口一直全屏,处理WM_GETMINMAXINFO消息,并设置全屏大小。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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