1.在OnInitDialog中添加
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
2.重写OnWindowPosChanging函数
void CXXXDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
if (lpwndpos->flags & SWP_SHOWWINDOW)
{
lpwndpos->flags &= ~SWP_SHOWWINDOW;
PostMessage(WM_WINDOWPOSCHANGING, 0, (LPARAM)lpwndpos);
ShowWindow(SW_HIDE);
}
else
CDialog::OnWindowPosChanging(lpwndpos);
}
3.重写DefWindowProc函数
LRESULT CXXXDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message==133 )
ShowWindow(SW_HIDE);
return CDialog::DefWindowProc(message, wParam, lParam);
}
4.重写OnShowWindow函数
void CXXXDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
if( GetStyle() & WS_VISIBLE )
{
CDialog::OnShowWindow(bShow, nStatus);
}
else
{
long Style = ::GetWindowLong(*this, GWL_STYLE);
::SetWindowLong(*this, GWL_STYLE, Style | WS_VISIBLE);
CDialog::OnShowWindow(SW_HIDE, nStatus);
}
}
另外,隐藏任务栏图标,可修改窗口的扩展样式
隐藏任务栏图标:ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
显示任务栏图标:ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);