VC点滴知识记录--关于窗口与显示器

关于显示器的设置

 // turn off monitor
 ::SendMessage(this->GetSafeHwnd()/*m_hWnd*/, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
 // turn on monitor
 ::SendMessage(this->GetSafeHwnd()/*m_hWnd*/, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
 // Low power monitor
 ::SendMessage(this->GetSafeHwnd()/*m_hWnd*/, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

关于窗口的设置

隐藏对话框工程的窗口:

如果在OnInitDialog()函数里写ShowWindow(SW_HIDE);是隐藏不了的,可能是因为MFC在执行OnInitDialog()函数之后才显示的窗口吧,所以之前的设置无效。我一直找不到合适的地方写这句代码,写了之后窗口是隐藏了,可是是在显示之前隐藏的,闪一下再隐藏,看着总是不太舒服。经过查资料,终于有所收获。

可以在对话框中重载虚函数DefWindowProc()

LRESULT CLx1211Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

   if(message==133 )
      ShowWindow(SW_HIDE);
   return CDialog::WindowProc(message, wParam, lParam);
}

经过试验,窗口是隐藏了,可是无论怎么ShowWindow(SW_SHOW)窗口也显示不出来。这该怎么办呢?

我不知道什么原因导致用ShowWindow(SW_SHOW)显示不出来,但是显示的问题解决了。代码如下:

LRESULT CLx1211Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
 if(message == WM_NCPAINT)
  if(!m_bShowWindow)ShowWindow(SW_HIDE);
  else ShowWindow(SW_SHOW);
 return CDialog::WindowProc(message, wParam, lParam);
}

想显示和隐藏时就设置变量m_bShowWindow = true 或 false。然后再

::SendMessage(m_hWnd, WM_NCPAINT, 0, 0);

隐藏框架工程:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    cs.style = WS_POPUP; //使主窗口不可见
    cs.dwExStyle |=WS_EX_TOOLWINDOW; //不显示任务按钮
    if( !CFrameWnd::PreCreateWindow(cs) )return FALSE;
  return TRUE;
}

显示窗口:ShowWindow(SW_SHOW);

让该窗口永远保持在最前面:
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
取消让该窗口永远保持在最前面:
::SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

你可能感兴趣的:(框架,mfc,任务)