在一个dialogue 中, 设置border 为NONOthis->m_bMaxSize// 窗口是否处于最大化状态
在dialog 有一个按钮, 当点击的时候 响应如下代码: this->ShowWindow(this->m_bMaxSize ? SW_RESTORE : SW_MAXIMIZE);
this->m_bMaxSize = !this->m_bMaxSize;当窗口最大化的时候, 居然 把 任务栏也给遮住了, 我如何不把任务栏给遮住?
在dialog 有一个按钮, 当点击的时候 响应如下代码: this->ShowWindow(this->m_bMaxSize ? SW_RESTORE : SW_MAXIMIZE);
this->m_bMaxSize = !this->m_bMaxSize;当窗口最大化的时候, 居然 把 任务栏也给遮住了, 我如何不把任务栏给遮住?
SystemParametersInfo(SPI_GETWORKAREA,0,&rc,0);
MoveWindow(&rc);
CRect m_rcWorkArea;
afx_msg LRESULT OnGetRect(WPARAM wParam, LPARAM lParam);#define UM_GETRECT WM_USER+0x11ON_MESSAGE(UM_GETRECT, &CXXDlg::OnGetRect)BOOL CXXDlg::OnInitDialog()
{
...
PostMessage(UM_GETRECT);
return TRUE;
}LRESULT CXXDlg::OnGetRect(WPARAM wParam, LPARAM lParam)
{
SystemParametersInfo(SPI_GETWORKAREA, 0, &m_rcWorkArea, 0);
GetWindowRect(m_rcWnd); return 0;
}// 按钮响应函数中
static BOOL bMaximum = FALSE;
MoveWindow((bMaximum = !bMaximum) ? m_rcWorkArea : m_rcWnd);
尝试了一楼的方法在 click 事件中:
this->ShowWindow(this->m_bMaxSize ? SW_RESTORE : SW_MAXIMIZE);
if(this->m_bMaxSize)
{
this->ShowWindow(SW_RESTORE);
}
else
{
CRect rc;
SystemParametersInfo(SPI_GETWORKAREA,0,&rc,0);
MoveWindow(&rc);
} this->m_bMaxSize = !this->m_bMaxSize;如果注释 红色的一行的话, 那么当点击按钮的时候,变成最大化(任务栏不会遮住),但是不能恢复成原来的,但如果不注释红色的话, 可以正常显示,只是貌似从最大化变成正常的时候, 会多闪一下这个 能有谁 解释下 吗?
int sy=GetSystemMetrics(SM_CYSCREEN); //获得高
int st=GetSystemMetrics(SM_CYSIZE); //获得任务栏的高度
MoveWindow(0,0,sx,sy-st); //移动窗口这样就可以了
int sx=GetSystemMetrics(SM_CXFULLSCREEN); //获得屏幕的大小-宽
int sy=GetSystemMetrics(SM_CYFULLSCREEN); //获得高
MoveWindow(0,0,sx,sy); //移动窗口