|
|
发表于 2008-1-18 11:41:00
|
显示全部楼层
Re:如何窗口模式下全屏(去掉所有标题)
public:
BOOL m_bFullScreen;
WINDOWPLACEMENT m_wpPrev; //用于保存正常视图时的窗口位置信息
DWORD m_dwStyle;
HMENU m_hMenu;
//全屏幕显示的处理函数
int CHWinMainFrame::ShowWindowMode(BOOL bFullScreen)
{
RECT rectDesktop;
WINDOWPLACEMENT wpNew;
if(!m_hWnd)
{
return -1;
}
if(bFullScreen)
{
//全屏幕显示模式
//保存正常视图时的窗口位置信息以便恢复原来状态
m_dwStyle=::GetWindowLong(m_hWnd,GWL_STYLE);
m_hMenu=GetMenu(m_hWnd);
//
::GetWindowPlacement(m_hWnd,&m_wpPrev);
m_wpPrev.length = sizeof(m_wpPrev);
//
::ShowWindow(m_hWnd,SW_HIDE);
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOREDRAW|SWP_NOSIZE);
::SetWindowLong(m_hWnd,GWL_STYLE,WS_POPUP|WS_SYSMENU);
::SetMenu(m_hWnd,NULL);
//调整RECT为新的窗口尺寸
::GetWindowRect(::GetDesktopWindow(),&rectDesktop);
::AdjustWindowRectEx(&rectDesktop,::GetWindowLong(m_hWnd,GWL_STYLE),FALSE,::GetWindowLong(m_hWnd,GWL_EXSTYLE));
//保存RECT
wpNew = m_wpPrev;
wpNew.showCmd = SW_SHOWNORMAL;
wpNew.rcNormalPosition = rectDesktop;
}
else
{
//正常显示模式
wpNew=m_wpPrev;
::SetWindowLong(m_hWnd,GWL_STYLE,m_dwStyle);
::SetMenu(m_hWnd,m_hMenu);
}
//设置窗口显示状态
::SetWindowPlacement(m_hWnd,&wpNew);
if(!::IsWindowVisible(m_hWnd))
{
::ShowWindow(m_hWnd,SW_SHOW);
}
return 0;
}
|
|