怎样让对话框全屏化?
怎样用VC作基于对话框的程序,可使对话框全屏,不是最大化,而是全屏,就像TC或DOS一样是全屏显示的?用什么function或方法可以实现? 问题点数:20、回复次数:9Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 15:45:28 得分 10
MoveWindow,如果你不想要标题栏就ModifyStyle!Top
2 楼superyang1010(superyang)回复于 2004-09-03 15:47:00 得分 0
或者是在对话框初始化时,调用什么函数,可以使对话框初始时就是全屏显示的?!!?!请帮助!谢谢!Top
3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-03 16:09:51 得分 0
BOOLCAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//隐藏对话框
ShowWindow(SW_HIDE);
CRectdlgRect;
GetClientRect(&&dlgRect);
CPointcenterPoint;
centerPoint.x=dlgRect.Width()/2;
centerPoint.y=dlgRect.Height()/2;
//得到对话框的中点坐标
CRgntestrgn;
this-〉ShowWindow(SW_HIDE);
intm=GetSystemMetrics(SM_CYSIZEFRAME);
//以下代码实现对话框的动态弹出
for(inti=10;i〈dlgRect.Width()/2+2m;i+=1)
{
testrgn.CreateRectRgn(centerPoint.x-i,centerPoint.y-i,centerPoint.x+i,centerPoint.y+i);
SetWindowRgn((HRGN)testrgn,TRUE);
ShowWindow(SW_SHOW);
CenterWindow();
testrgn.DeleteObject();
}
returnTRUE;
}
编译之后进入程序的帮助选单,你会看见一个由小变大的对话框跃然于屏幕之上。Top
4 楼lixiaosan(小三)回复于 2004-09-03 16:17:03 得分 5
取消标题栏
用GetSystemMetrics得到屏幕大小,然后用得到的值来MoveWindow,Top
5 楼Avoid(好象又涨分了)回复于 2004-09-03 16:22:26 得分 5
先取得分辨率,
int cx,cy;
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
在用MoveWindow
CRect rcTemp;
rcTemp.BottomRight() = CPoint(cx, cy);
rcTemp.TopLeft() = CPoint(0, 0);
MoveWindow(&rcTemp);
Top
6 楼jasonbiao(阿彪)回复于 2004-09-03 16:35:00 得分 0
以下是全屏显示窗口客户去的代码,可以参考一下
重载OnGetMinMaxInfo()使客户区域达到全屏(菜单、标题栏等没有了)
void CMainFrame::FullScreen()
{
GetWindowPlacement(&m_OldWndPlacement); //WINDOWPLACEMENT
CRect WindowRect;
GetWindowRect(&WindowRect);
CRect ClientRect;
RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);
ClientToScreen(&ClientRect);
//获取屏幕的分辨率
int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
//将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置
m_FullScreenRect.left = WindowRect.left - ClientRect.left;
m_FullScreenRect.top = WindowRect.top - ClientRect.top;
m_FullScreenRect.right = WindowRect.right - ClientRect.right + nFullWidth;
m_FullScreenRect.bottom = WindowRect.bottom - ClientRect.bottom + nFullHeight;
m_bFullScreen = TRUE;//设置全屏显示标志为 TRUE
//进入全屏显示状态
WINDOWPLACEMENT wndpl;
wndpl.length = sizeof(WINDOWPLACEMENT);
wndpl.flags = 0;
wndpl.showCmd = SW_SHOWNORMAL;
wndpl.rcNormalPosition = m_FullScreenRect;
SetWindowPlacement(&wndpl);
}
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
if (m_bFullScreen)
{
lpMMI->ptMaxSize.x = m_FullScreenRect.Width();
lpMMI->ptMaxSize.y = m_FullScreenRect.Height();
lpMMI->ptMaxPosition.x = m_FullScreenRect.Width();
lpMMI->ptMaxPosition.y = m_FullScreenRect.Height();
//最大的Track尺寸也要改变
lpMMI->ptMaxTrackSize.x = m_FullScreenRect.Width();
lpMMI->ptMaxTrackSize.y = m_FullScreenRect.Height();
}
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
Top
7 楼bobob(静思)回复于 2004-09-03 17:45:01 得分 0
支持小三Top
8 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-09-03 22:52:33 得分 0
去掉标题栏,得到当前屏幕大小,然后用SetWindowPos函数也可以实现。Top
9 楼enoloo(在水一方)回复于 2004-09-12 11:56:55 得分 0
OnInitDlg中,加入如下代码:
ModifyStyleEx(0, WS_EX_APPWINDOW | WS_EX_CONTROLPARENT, SWP_NOSIZE);
ModifyStyle(WS_BORDER | WS_DLGFRAME | WS_THICKFRAME, WS_POPUP, SWP_NOSIZE);
CRect rect(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
MoveWindow(&rect,false);
Top




