10#if !defined(OWL_MODULE_H)
14#if defined(BI_HAS_PRAGMA_ONCE)
27#include <Unknwnbase.h>
57 auto IsString() const ->
bool {
return (Representation >> 16) != 0;}
58 auto IsAtom() const ->
bool {
return !IsString();}
59 auto GetString() const ->
tstring;
106 bool IsLoaded()
const;
116 tstring GetModuleFileName()
const;
132 std::string LoadHtml(
TResId)
const;
235 uint32 GetSignature()
const;
236 uint32 GetStrucVersion()
const;
237 uint32 GetFileVersionMS()
const;
238 uint32 GetFileVersionLS()
const;
239 uint32 GetProductVersionMS()
const;
240 uint32 GetProductVersionLS()
const;
242 uint32 GetFileFlagsMask()
const;
243 uint32 GetFileFlags()
const;
244 bool IsDebug()
const;
245 bool InfoInferred()
const;
246 bool IsPatched()
const;
247 bool IsPreRelease()
const;
248 bool IsPrivateBuild()
const;
249 bool IsSpecialBuild()
const;
251 TFileType GetFileType()
const;
252 uint32 GetFileSubType()
const;
253 FILETIME GetFileDate()
const;
280 uint GetLanguage()
const;
281 tstring GetLanguageName()
const;
340 const tstring& SysMessage()
const;
377#if defined(BI_COMP_BORLANDC)
452 static T*& DllPtrRef();
472 T*&
dll = DllPtrRef();
474 if (
dll ==
nullptr) {
492 T*&
dll = DllPtrRef();
504 return DllPtrRef() !=
nullptr;
557 (
reinterpret_cast<TProc>(Proc))();
565 TModuleProc0(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
569 return (
reinterpret_cast<TProc>(Proc))();
577 TModuleProcV1(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
581 (
reinterpret_cast<TProc>(Proc))(
p1);
586template <
class R,
class P1>
589 TModuleProc1(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
593 return (
reinterpret_cast<TProc>(Proc))(
p1);
598template <
class P1,
class P2>
601 TModuleProcV2(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
610template <
class R,
class P1,
class P2>
613 TModuleProc2(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
617 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2);
622template <
class P1,
class P2,
class P3>
625 TModuleProcV3(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
634template <
class R,
class P1,
class P2,
class P3>
637 TModuleProc3(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
641 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3);
646template <
class P1,
class P2,
class P3,
class P4>
649 TModuleProcV4(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
658template <
class R,
class P1,
class P2,
class P3,
class P4>
661 TModuleProc4(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
670template <
class P1,
class P2,
class P3,
class P4,
class P5>
673 TModuleProcV5(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
682template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
685 TModuleProc5(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
694template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
697 TModuleProcV6(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
706template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
709 TModuleProc6(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
718template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7>
721 TModuleProcV7(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
731template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
735 TModuleProc7(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
745template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
749 TModuleProcV8(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
759template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
763 TModuleProc8(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
773template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
774 class P7,
class P8,
class P9>
777 TModuleProcV9(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
787template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
788 class P7,
class P8,
class P9>
791 TModuleProc9(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
801template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
805 TModuleProcV10(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
816template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
820 TModuleProc10(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
831template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
835 TModuleProcV11(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
841 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11);
846template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
850 TModuleProc11(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
856 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11);
861template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
865 TModuleProcV12(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
871 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12);
876template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
880 TModuleProc12(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
886 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12);
891template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
895 TModuleProcV13(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
902 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13);
907template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
911 TModuleProc13(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
918 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13);
922template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
926 TModuleProcV14(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
932 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14);
936template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
941 TModuleProc14(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
947 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14);
951template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
956 TModuleProcV15(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
963 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
p15);
967template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
972 TModuleProc15(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
979 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
984template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
989 TModuleProcV16(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
996 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
1001template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1006 TModuleProc16(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1013 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
1018template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1023 TModuleProcV17(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1030 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
1035template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1040 TModuleProc17(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1047 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
1052template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1057 TModuleProcV18(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1064 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
1069template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1074 TModuleProc18(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1081 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
1086template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1091 TModuleProcV19(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1099 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
1104template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1109 TModuleProc19(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1117 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
1122template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1128 TModuleProcV20(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1136 (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
1141template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1147 TModuleProc20(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1155 return (
reinterpret_cast<TProc>(Proc))(
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
1229 return Name.c_str();
1287 return ::GetProcAddress(Handle,
id.GetPointerRepresentation());
1314 return ::FindResource(Handle,
id,
type);
1341 return ::FindResourceEx(Handle,
type,
id,
langId);
1358 return ::LoadResource(Handle,
hRsrc);
1375 return ::SizeofResource(Handle,
hRsrc);
1388 return ::CopyIcon(hIcon);
#define PRECONDITION(condition)
TDllLoader<> provides an easy way to load one instance of a DLL on demand.
TDocTemplate is an abstract base class that contains document template functionality.
Simple encapsulation of the SetErrorMode call.
ObjectWindows dynamic-link libraries (DLLs) construct an instance of TModule, which acts as an object...
TModuleProc is a base class that does inital binding of a function name or ordinal to the correspondi...
FARPROC Proc
Derived template classes perform type-safe parameter passing on call.
TModuleVersionInfo provides access to a TModule's VERSIONINFO resource.
delay loading OLEAUT32.DLL/OLE2DISP.DLL
delay loading Ole32.DLL/COMPOBJ.DLL
TResId encapsulates a Windows resource identifier.
Classes that inherit from TStreamableBase are known as streamable classes (their objects can be writt...
delay loading USER :), just for some memory/resource check programs
static BOOL GetClassInfo(HINSTANCE, LPCTSTR, LPWNDCLASS)
delay loading VERSION.DLL
Type-safe encapsulation of a Windows class name, a union between ATOM and LPCTSTR.
TWindow, derived from TEventHandler and TStreamableBase, provides window-specific behavior and encaps...
Derived from xmsg, TXBase is the base class for ObjectWindows and ObjectComponents exception-handling...
A nested class, TXInvalidModule describes an exception that results from an invalid module.
Exception class for TModuleVersionInfo. [VH 2005-04-03].
TXOwl is root class of the ObjectWindows exception hierarchy.
STDAPI_(TDocTemplate **) GetDocTemplateHead(uint32 version)
#define DECLARE_STREAMABLE_OWL(cls, ver)
#define DECLARE_STREAMABLE_INLINES(cls)
TWindowClassName(LPCTSTR s)
bool IsPreRelease() const
VS_FIXEDFILEINFO * FixedInfo
Fixed file info structure.
THandle GetHandle() const
Return the instance handle of the library module represented by the TModule obect.
auto GetClassInfo(TWindowClassName, WNDCLASS *wndclass) const -> bool
Retrieves information about the given window class.
TFileSubType
TFileSubType values are returned by GetFileSubType() if GetFileType.
HGLOBAL LoadResource(HRSRC hRsrc) const
Wrapper for the Windows API.
tstring GetModuleFileName() const
String-aware overload.
HRSRC FindResource(TResId id, TResId type) const
Wrapper for the Windows API to find a particular resource.
uint32 GetStrucVersion() const
auto IsString() const -> bool
uint32 GetFileOS() const
returns TFileOS values
VS_FIXEDFILEINFO & GetFixedInfo()
Return the version information about this module.
tstring GetLanguageName() const
Return the language name of this module.
uint32 GetFileFlags() const
HINSTANCE THandle
TModule encapsulates an HINSTANCE.
uint32 GetFileFlagsMask() const
TDllLoader()
Creates a dynamic copy of the DLL object (i.e.
uint GetLanguage() const
Return the language id of this module.
TFileType
TFileType is returned by GetFileType()
auto IsAtom() const -> bool
static bool IsAvailable()
Load the dll on demand, returning true if it was loaded OK.
bool InfoInferred() const
uint32 GetFileVersionMS() const
Get the major file version (first 32-bits).
auto GetPointerRepresentation() const -> LPCTSTR
uint32 GetFileVersionLS() const
Get the minor file version (last 32-bits).
uint32 SizeofResource(HRSRC hRsrc) const
Wrapper for the Windows API.
uint8 * Buff
new'd File version info buffer
TFileType GetFileType() const
HRSRC FindResourceEx(TResId id, TResId type, TLangId langId=LangNeutral) const
Wrapper for the Windows API to find a particular resource.
TFileOS
TFileOS values are returned by GetFileOS()
uint32 GetSignature() const
bool IsFileFlagSet(uint32 flag) const
Return true if the flag has been set in the version info.
~TErrorMode()
Destructor of TErrorMode object - restores the state of the error mode saved during construction of t...
LPCTSTR GetName() const
Returns the name of the module.
bool IsPrivateBuild() const
uint32 GetProductVersionMS() const
Get the major product version number (first 32-bits).
FARPROC GetProcAddress(TNarrowResId) const
Returns the entry-point address of the specified exported function if found, otherwise returns NULL.
uint32 GetProductVersionLS() const
Get the minor product version number (last 32-bits).
uint32 Lang
Default language translation.
const tstring & SysMessage() const
bool IsSpecialBuild() const
bool operator==(const TModule &m) const
Returns true if this instance is equal to the other instance; otherwise, returns false.
HICON CopyIcon(HICON hIcon) const
Wrapper for the Windows API.
TErrorMode(uint mode)
Constructs a TErrorMode object which invokes the 'SetErrorMode' API function to control how/whether W...
bool IsLoaded() const
Returns a nonzero value if the instance handle is loaded.
~TDllLoader()
Deletes the dll object when we go away to release the dll from memory.
@ KybdDriver
VFT2_DRV_KEYBOARD.
@ SysDriver
VFT2_DRV_SYSTEM.
@ VectorFont
VFT2_FONT_VECTOR.
@ InstallableDriver
VFT2_DRV_INSTALLABLE.
@ DisplayDriver
VFT2_DRV_DISPLAY.
@ RasterFont
VFT2_FONT_RASTER.
@ UnknownFont
VFT2_UNKNOWN.
@ LangDriver
VFT2_DRV_LANGUAGE.
@ MouseDriver
VFT2_DRV_MOUSE.
@ PtrDriver
VFT2_DRV_PRINTER.
@ SoundDriver
VFT2_DRV_SOUND.
@ NtwkDriver
VFT2_DRV_NETWORK.
TLocaleString - localized name support.
bool OWLInitUserDLL(HINSTANCE hInstance, LPCTSTR cmdLine)
Initialization routine that must be called from User DLL if DLL provides it's own entry point [i....
STDAPI_(owl::TDocTemplate **) GetDocTemplateHead(owl STDAPI_(owl::TModule **) GetModulePtr(owl in OwlMain)(int argc, TCHAR *argv[])
Main entry point for an Owl application.
Object Windows Library (OWLNext Core)
owl::uint16 TLangId
Holds a language ID, a predefined number that represents a base language and dialect.
const TLangId LangNeutral
BSTR SysAllocString(const char *str)
STDAPI __declspec(dllexport) DllRegisterCommand(LPCTSTR cmdLine)
Entry point for complete registration management via command line Don't let any exceptions blow back ...
General definitions used by all ObjectWindows programs.
ObjectWindows exception class & function definitions.
Various types of smart pointer templatized classes.
Classes for window system structure and type encapsulation.