我要让一个区域双击后全屏,,再双击便恢复以前的位置..下面是几句话.
第一次双击:
RECT m_rcInit;
GetDlgItem(IDC_PLAYOCXCTRL1)->GetWindowRect(&m_rcInit);
GetDlgItem(IDC_PLAYOCXCTRL1)->MoveWindow(0,0,1024,768,TRUE);
ModifyStyle(WS_CAPTION,0,SWP_FRAMECHANGED); //隐藏标题栏
这个时候全屏了..下面是再双击的时候
RECT m_rcTemp;
m_rcTemp.top=m_rcInit.top;
m_rcTemp.bottom=m_rcInit.bottom;
m_rcTemp.left=m_rcInit.left;
m_rcTemp.right=m_rcInit.right;
ScreenToClient(&m_rcTemp);
GetDlgItem(IDC_PLAYOCXCTRL1)->MoveWindow(&m_rcTemp);
GetDlgItem(IDC_PLAYOCXCTRL1)->Invalidate(TRUE);
ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED); //显示标题栏这样运行以后,每次全屏,然后缩小以后,位置都会有一点偏移..多点几次就偏移到不知哪儿去了..
如果不要隐藏标题栏和显示标题栏那2句的话就是正常的. 但是全屏时应该让标题栏隐藏,恢复后
再显示出来才对...这个怎么回事呢?
第一次双击:
RECT m_rcInit;
GetDlgItem(IDC_PLAYOCXCTRL1)->GetWindowRect(&m_rcInit);
GetDlgItem(IDC_PLAYOCXCTRL1)->MoveWindow(0,0,1024,768,TRUE);
ModifyStyle(WS_CAPTION,0,SWP_FRAMECHANGED); //隐藏标题栏
这个时候全屏了..下面是再双击的时候
RECT m_rcTemp;
m_rcTemp.top=m_rcInit.top;
m_rcTemp.bottom=m_rcInit.bottom;
m_rcTemp.left=m_rcInit.left;
m_rcTemp.right=m_rcInit.right;
ScreenToClient(&m_rcTemp);
GetDlgItem(IDC_PLAYOCXCTRL1)->MoveWindow(&m_rcTemp);
GetDlgItem(IDC_PLAYOCXCTRL1)->Invalidate(TRUE);
ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED); //显示标题栏这样运行以后,每次全屏,然后缩小以后,位置都会有一点偏移..多点几次就偏移到不知哪儿去了..
如果不要隐藏标题栏和显示标题栏那2句的话就是正常的. 但是全屏时应该让标题栏隐藏,恢复后
再显示出来才对...这个怎么回事呢?
这儿有现成的全屏代码:
http://dev.firnow.com/course/3_program/vc/vc_js/20071226/93510.html
m_bFullScreen=!m_bFullScreen;
//全屏显示
LONG style = ::GetWindowLong(this->m_hWnd,GWL_STYLE);
if(m_bFullScreen)
{
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(this->m_hWnd,GWL_STYLE, style);
this->ShowWindow(SW_SHOWMAXIMIZED);
CRect rect;
this->GetWindowRect(&rect);
::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,rect.left-1, rect.top-1, rect.right-rect.left + 3, rect.bottom-rect.top + 3, SWP_FRAMECHANGED); }
else
{
style |= WS_DLGFRAME | WS_THICKFRAME;
SetWindowLong(this->m_hWnd, GWL_STYLE, style);
this->ShowWindow(SW_NORMAL); }
{
// TODO: Add your message handler code here and/or call default
CDialog::OnLButtonDblClk(nFlags, point); static BOOL bMaximum = FALSE; bMaximum = !bMaximum; if(bMaximum)
{
ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED);
ShowWindow(SW_SHOWMAXIMIZED);
}
else
{
ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED);
ShowWindow(SW_RESTORE);
}
}