|
|
/*
* basewin.hxx * * Copyright (c) 1998 Microsoft Corporation * * Purpose: Defines the base window classes for Trigger * * Owner: pierrec * */
// Includes
// Forward Classes Definitions
#define DLLAPI __declspec(dllexport)
class CBaseFrame; // Application Frame
class CBaseWindow; // Any window.
//
// This string must be defined by the target (exadmin, maildsmx, adcadmin, etc...)
//
extern const tstring szHelpFileCONTEXT; // Name of the context-sensitive help file
// To parse the command line.
#define szCommandSeparator _T("/")
// class CBaseWindow
/*
* Purpose: Provide a common inheritance for all our window * wrapper classes. * * Useage: The only method is Hwnd()... The creation methods * of the CBaseXxxx classes ensure m_hwnd is set. * * Inheritance: CBaseWindow * * File: base\basewin.cxx */ class DLLAPI CBaseWindow { private: HWND m_hwnd;
public: CBaseWindow(void) { m_hwnd = NULL; } virtual ~CBaseWindow(void);
void SetHwnd(HWND hwnd) { m_hwnd = hwnd; } HWND Hwnd( void ) { ASSERT(!m_hwnd || IsWindow(m_hwnd)); return m_hwnd; } // In CACLEditor, we want to cleanup information we were keeping
// per HWND. So even though the window has been destroyed, we want
// to know what the HWND used to be.
HWND HwndWithoutASSERT(void) { return m_hwnd; }
void Attach(HWND hwnd); static CBaseWindow * Pwin(HWND hwnd); void Detach();
static void InvalidateWindow(PVOID pv); };
// class CBaseFrame
/*
* Purpose: Implements the basic functionnality of the Frame window. * * Useage: There is only ONE object of this type. You can obtain a * pointer to this object by calling the static method Pframe(). * * The 3 virtual methods ScInitApplication(), * ScInitInstance() and DeinitInstance() do the normal * thing. The method ScRegisterFrameClass() is provided * to simplify the window class registration call. * * Objects embedded in derived classes can be initialized * in ScInitInstance(), they are destructed in OnDestroy() * (which is called when the Windows objects still exist. * * The message loop is handled automatically, such that * classes derived from CBaseFrame typically only need to * provide the virtual methods. * If additionnal processing of the incoming window messages * is required, you may also override LWndProc(). * * IdMessageBox() is THE place to report errors, Frame classes * derived from CBaseFrame may override this method (e.g. service) * * Also, a few methods are available to get the activation * information: * HInstance() * HPrevInst() * SzCmdLine() * NCmdShow() * * Finally, some utility methods are provided: * Hicon() returns a handle to the Application Icon. * GetHelp() Calls WinHelp * PformActive() returns the active MDI child * * Inheritance: CBaseFrame CBaseWindow * * File: base\basewin.cxx */ class CMMCFrame;
class DLLAPI CBaseFrame : public CBaseWindow { friend class CMMCFrame; public:
// Note: A snapin is also a DLL so we answer TRUE for both FDLL and FSnapin.
static BOOL FDLL(void) { return TRUE; } static BOOL FSnapin(void) { return TRUE; }
private: HACCEL m_haccelSingleFrame; HACCEL m_haccelFrame;
DWORD m_dwFrameComponentBits; DWORD m_dwFrameModeBits;
public: static HINSTANCE s_hinst; private: static HINSTANCE s_hinstPrev; static HINSTANCE s_hinstMailBase; static CBaseFrame * s_pframe; private:
INT m_nReturn; BOOL m_fExit;
protected: HICON m_hicon;
public: CBaseFrame(); virtual ~CBaseFrame(void);
virtual HACCEL HaccelSingleFrame(void) { return m_haccelSingleFrame; } virtual void SetHaccelSingleFrame(HACCEL haccel) { m_haccelSingleFrame = haccel; }
virtual HACCEL HaccelFrame(void) { return m_haccelFrame; } virtual void SetHaccelFrame(HACCEL haccel) { m_haccelFrame = haccel; }
virtual DWORD DwFrameComponentBits(void) { return m_dwFrameComponentBits; } virtual void SetFrameComponentBits(DWORD dwComp) { m_dwFrameComponentBits = dwComp; }
virtual DWORD DwActiveModeBits(void);
static HINSTANCE Hinst(void) { return s_hinst; } static HINSTANCE HinstPrev(void) { return s_hinstPrev; } static CBaseFrame * Pframe(void) { return s_pframe; }
virtual SC ScInitApplication(void) = 0; virtual void DeinitApplication(void) = 0; virtual SC ScInitInstance(void); virtual LONG IdMessageBox(tstring& szMessage, UINT fuStyle); virtual void OnDestroy(void); virtual void DeinitInstance(void);
virtual HICON Hicon(void) { return m_hicon; }
virtual INT NReturn(void) { return m_nReturn; } virtual void SetNReturn(INT n) { m_nReturn = n; } virtual BOOL FExit(void) { return m_fExit; } virtual void SetFExit(BOOL f) { m_fExit = f; }
friend int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int ); friend SC ScInitDLL(HINSTANCE); friend void SetHinst(HINSTANCE hinst);
}; //*** class CBaseFrame
// class CBaseFrame
/*
* Purpose: Implements the basic functionnality of the Frame window. * * Useage: There is only ONE object of this type. You can obtain a * pointer to this object by calling the static method Pframe(). * * The 3 virtual methods ScInitApplication(), * ScInitInstance() and DeinitInstance() do the normal * thing. The method ScRegisterFrameClass() is provided * to simplify the window class registration call. * * Objects embedded in derived classes can be initialized * in ScInitInstance(), they are destructed in OnDestroy() * (which is called when the Windows objects still exist. * * The message loop is handled automatically, such that * classes derived from CBaseFrame typically only need to * provide the virtual methods. * If additionnal processing of the incoming window messages * is required, you may also override LWndProc(). * * IdMessageBox() is THE place to report errors, Frame classes * derived from CBaseFrame may override this method (e.g. service) * * Also, a few methods are available to get the activation * information: * HInstance() * HPrevInst() * SzCmdLine() * NCmdShow() * * Finally, some utility methods are provided: * Hicon() returns a handle to the Application Icon. * GetHelp() Calls WinHelp * PformActive() returns the active MDI child * * Inheritance: CBaseFrame CBaseWindow * * File: base\basewin.cxx */ class CMMCFrame;
class DLLAPI CBaseUIFrame : public CBaseFrame { typedef CBaseFrame _BaseClass; friend class CMMCFrame; public:
static BOOL FMMC() { return true; }
public: CBaseUIFrame() { } virtual ~CBaseUIFrame(void) { }
static CBaseUIFrame * Pframe(void) { return(CBaseUIFrame *) CBaseFrame::Pframe(); }
virtual SC ScInitApplication(void) = 0; virtual void DeinitApplication(void) = 0;
friend int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int ); friend SC ScInitDLL(HINSTANCE); friend void SetHinst(HINSTANCE hinst);
}; //*** class CBaseFrame
// Free functions
// Implemented by the local system requiring either WinMain
// or the DLL stuff.
// ScInitDLL & DeinitDLL are kind of part 1 and part 2 of WinMain!
// They are called by the DLLEntryPoint of MailUMX.
// DO NOT CONFUSE: MAILBASE does NOT require ScInitDLL!
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int); SC ScInitDLL(HINSTANCE); void DeinitDLL(void);
// Implemented in the EXE's subsystem...
CBaseFrame * PframeCreate( void );
|