📄 b14dlg.cpp
字号:
// B14Dlg.cpp : implementation file
//
#include "StdAfx.h"
#include "ScreenSaverWnd.h"
#include "B14Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CB14Dlg, CDialog)
// MFC's normal processing would have CDialog and CWnd handle any messages
// not handled by the CScreenSaverDlg. Some are not appropriate for a
// screen saver's configuration dialog, so we skip CDialog and CWnd in the
// line below, and have all unhandled messages go to the CCmdTarget.
// The WindowProc() below will forward the reasonable messages to CDialog.
//
BEGIN_MESSAGE_MAP(CB14Dlg, CCmdTarget)
//{{AFX_MSG_MAP(CScreenSaverDlg)
ON_WM_NCDESTROY()
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(IDOK, OnOK)
ON_COMMAND(IDCANCEL, OnCancel)
ON_MESSAGE(WM_INITDIALOG, HandleInitDialog)
END_MESSAGE_MAP()
// There should be only one CScreenSaverDlg instantiated at a time.
// The helper function AfxGetScreenSaverDlg() returns this pointer.
//
/* static */ CB14Dlg* CB14Dlg::sm_pTheConfigureDialog = NULL;
CB14Dlg::CB14Dlg()
{
ASSERT(!sm_pTheConfigureDialog);
sm_pTheConfigureDialog = this;
}
CB14Dlg::~CB14Dlg()
{
sm_pTheConfigureDialog = NULL;
}
/////////////////////////////////////////////////////////////////////////////
void CB14Dlg::OnNcDestroy()
{
CDialog::OnNcDestroy();
}
BOOL CB14Dlg::OnInitDialog()
{
if (AfxGetScreenSaverWnd())
AfxGetScreenSaverWnd()->RestoreOptions();
return CDialog::OnInitDialog();
}
int CB14Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
#ifdef _DEBUG
// Screen savers should be TOPMOST to block out any other windows,
// such as other topmost windows created previously. However, if you
// are trying to debug a screen saver, it can get in the way.
// We remove the topmost status from this window only if we're _DEBUG.
//
SetWindowPos(&CWnd::wndNoTopMost,
0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
#endif
return 0;
}
/////////////////////////////////////////////////////////////////////////////
//
// The default message routing is not built to deal with screen saver
// dialogs. This avoids the default dialog proc from handling anything we
// don't handle.
//
LRESULT CB14Dlg::DefWindowProc(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
return 0L;
}
/////////////////////////////////////////////////////////////////////////////
// ::ScreenSaverConfigureDialog():
// This API must be exported to be recognized as a configurable screen
// saver. This serves as the dialog message proc called by Windows to
// display the configuration dialog for the screen saver. Not all messages
// that go to the dialog actually get sent to our proc.
//
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg,
WPARAM wParam, LPARAM lParam)
{
// There should be one global instance of a CB14Dlg derivative.
ASSERT(AfxGetScreenSaverDialog());
if (!AfxGetScreenSaverDialog())
return 0L;
if (!AfxGetScreenSaverDialog()->m_hWnd)
AfxGetScreenSaverDialog()->Attach(hDlg);
// MFC does a lot of helpful but nonstandard things with WM_INITDIALOG.
//
// Since a screen saver's configuration dialog proc is dictated to us,
// we need to manually perform the ->OnInitDialog() call ourselves.
//
// This is equivalent to MFC4.2's ::AfxDlgProc() [which is not exported
// nor used by the sanctioned exported public ::AfxCallWndProc()
// function].
//
LRESULT lResult;
if (uMsg == WM_INITDIALOG)
{
// special case for WM_INITDIALOG
CDialog* pDlg =
DYNAMIC_DOWNCAST(CDialog,
CWnd::FromHandlePermanent(hDlg));
if (pDlg != NULL)
lResult = pDlg->OnInitDialog();
else
lResult = 1;
}
else
{
lResult =
AfxCallWndProc(
AfxGetScreenSaverDialog(),
AfxGetScreenSaverDialog()->m_hWnd,
uMsg, wParam, lParam);
}
if (uMsg == WM_NCDESTROY)
{
ASSERT(!AfxGetScreenSaverDialog() ||
!AfxGetScreenSaverDialog()->m_hWnd);
}
return lResult;
}
// ::RegisterDialogClasses():
// This API must be exported to be recognized as a configurable screen
// saver. It is called upon startup to register any WNDCLASS structures
// that would later be necessary to display a configuration dialog.
//
BOOL WINAPI RegisterDialogClasses(HANDLE hInstance)
{
// We rely on the default registered window class used by MFC
// dialogs. Therefore, we have nothing to do here.
//
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
LRESULT CB14Dlg::WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return CDialog::WindowProc(uMsg, wParam, lParam);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -