关于显示器的设置
// 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);