Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
B14Dlg.cpp
Package: 第二章 屏幕保护程序的开发.rar [view]
Upload User: szxyd1688
Upload Date: 2007-06-08
Package Size: 1440k
Code Size: 5k
Category:
Screen Saver
Development Platform:
Visual C++
- // 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);
- }