10#if !defined(OWL_MODULE_H)
14#if defined(BI_HAS_PRAGMA_ONCE)
27#include <Unknwnbase.h>
54 explicit TWindowClassName(LPCTSTR s) : Representation{reinterpret_cast<UINT_PTR>(s)} {}
57 auto IsString() const ->
bool {
return (Representation >> 16) != 0;}
59 auto GetString() const ->
tstring;
64 UINT_PTR Representation;
86 explicit TModule(
const tstring& name,
bool shouldLoad =
true,
bool mustLoad =
true,
bool addToList=
true);
87 explicit TModule(LPCTSTR name,
THandle handle,
bool addToList =
true);
105 bool operator ==(
const TModule& m)
const;
163 friend _OWLCFUNC(std::ostream&) operator <<(std::ostream& os,
const TModule& m);
233 VS_FIXEDFILEINFO & GetFixedInfo();
235 uint32 GetSignature()
const;
236 uint32 GetStrucVersion()
const;
237 uint32 GetFileVersionMS()
const;
238 uint32 GetFileVersionLS()
const;
239 uint32 GetProductVersionMS()
const;
240 uint32 GetProductVersionLS()
const;
241 bool IsFileFlagSet(
uint32 flag)
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;
255 bool GetInfoString(LPCTSTR str, LPCTSTR& value,
uint lang=0);
257 bool GetFileDescription(LPCTSTR& fileDesc,
uint lang=0);
258 bool GetFileVersion(LPCTSTR& fileVersion,
uint lang=0);
259 bool GetInternalName(LPCTSTR& internalName,
uint lang=0);
260 bool GetLegalCopyright(LPCTSTR& copyright,
uint lang=0);
261 bool GetOriginalFilename(LPCTSTR& originalFilename,
uint lang=0);
262 bool GetProductName(LPCTSTR& prodName,
uint lang=0);
263 bool GetProductVersion(LPCTSTR& prodVersion,
uint lang=0);
264 bool GetSpecialBuild(LPCTSTR& debug,
uint lang=0);
280 uint GetLanguage()
const;
281 tstring GetLanguageName()
const;
286 void Init(LPCTSTR modFName);
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;
521template <
class T> T*& TDllLoader<T>::DllPtrRef()
523 static T* ThisDll =
nullptr;
555 typedef void ( WINAPI* TProc)();
557 (
reinterpret_cast<TProc
>(Proc))();
565 TModuleProc0(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
567 typedef R ( WINAPI* TProc)();
569 return (
reinterpret_cast<TProc
>(Proc))();
577 TModuleProcV1(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
579 typedef void ( WINAPI* TProc)(P1 p1);
580 void operator ()(P1 p1) {
581 (
reinterpret_cast<TProc
>(Proc))(p1);
586template <
class R,
class P1>
589 TModuleProc1(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
591 typedef R ( WINAPI* TProc)(P1 p1);
592 R operator ()(P1 p1) {
593 return (
reinterpret_cast<TProc
>(Proc))(p1);
598template <
class P1,
class P2>
601 TModuleProcV2(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
603 typedef void ( WINAPI* TProc)(P1 p1, P2 a2);
604 void operator ()(P1 p1, P2 a2) {
605 (
reinterpret_cast<TProc
>(Proc))(p1, a2);
610template <
class R,
class P1,
class P2>
613 TModuleProc2(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
615 typedef R ( WINAPI* TProc)(P1 p1, P2 p2);
616 R operator ()(P1 p1, P2 p2) {
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) {}
627 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3);
628 void operator ()(P1 p1, P2 p2, P3 p3) {
629 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3);
634template <
class R,
class P1,
class P2,
class P3>
637 TModuleProc3(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
639 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3);
640 R operator ()(P1 p1, P2 p2, P3 p3) {
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) {}
651 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4);
652 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4) {
653 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4);
658template <
class R,
class P1,
class P2,
class P3,
class P4>
661 TModuleProc4(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
663 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4);
664 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4) {
665 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4);
670template <
class P1,
class P2,
class P3,
class P4,
class P5>
673 TModuleProcV5(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
675 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5);
676 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) {
677 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5);
682template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5>
685 TModuleProc5(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
687 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5);
688 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) {
689 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5);
694template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6>
697 TModuleProcV6(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
699 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6);
700 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) {
701 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6);
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) {}
711 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6);
712 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) {
713 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6);
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) {}
723 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
725 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) {
726 (
reinterpret_cast<TProc
>(Proc)) (p1, p2, p3, p4, p5, p6, p7);
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) {}
737 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
739 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) {
740 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7);
745template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
749 TModuleProcV8(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
751 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
753 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) {
754 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8);
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) {}
765 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
767 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) {
768 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8);
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) {}
779 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
780 P7 p7, P8 p8, P9 p9);
781 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) {
782 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9);
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) {}
793 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
794 P7 p7, P8 p8, P9 p9);
795 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) {
796 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9);
801template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
802 class P7,
class P8,
class P9,
class P10>
805 TModuleProcV10(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
807 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
808 P7 p7, P8 p8, P9 p9, P10 p10);
809 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
811 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
816template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
817 class P7,
class P8,
class P9,
class P10>
820 TModuleProc10(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
822 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
823 P7 p7, P8 p8, P9 p9, P10 p10);
824 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
826 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
831template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
832 class P7,
class P8,
class P9,
class P10,
class P11>
835 TModuleProcV11(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
837 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
838 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11);
839 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
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,
847 class P7,
class P8,
class P9,
class P10,
class P11>
850 TModuleProc11(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
852 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
853 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11);
854 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
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,
862 class P7,
class P8,
class P9,
class P10,
class P11,
class P12>
865 TModuleProcV12(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
867 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
868 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12);
869 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
870 P10 p10, P11 p11, P12 p12) {
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,
877 class P7,
class P8,
class P9,
class P10,
class P11,
class P12>
880 TModuleProc12(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
882 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
883 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12);
884 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
885 P10 p10, P11 p11, P12 p12) {
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,
892 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13>
895 TModuleProcV13(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
897 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
898 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,
900 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
901 P10 p10, P11 p11, P12 p12, P13 p13) {
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,
908 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13>
911 TModuleProc13(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
913 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
914 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,
916 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
917 P10 p10, P11 p11, P12 p12, P13 p13) {
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,
923 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
class P14>
926 TModuleProcV14(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
928 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
929 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14);
930 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
931 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14){
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,
937 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
941 TModuleProc14(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
943 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
944 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14);
945 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
946 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14){
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,
952 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
class P14,
956 TModuleProcV15(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
958 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
959 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
961 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
962 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15){
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,
968 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
969 class P14,
class P15>
972 TModuleProc15(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
974 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
975 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
977 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
978 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15){
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,
985 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
986 class P14,
class P15,
class P16>
989 TModuleProcV16(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
991 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
992 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
994 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
995 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16){
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,
1002 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1003 class P14,
class P15,
class P16>
1006 TModuleProc16(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1008 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1009 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1011 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1012 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16){
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,
1019 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1020 class P14,
class P15,
class P16,
class P17>
1023 TModuleProcV17(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1025 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1026 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1027 P15 p15, P16 p16, P17 p17);
1028 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1029 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17){
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,
1036 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1037 class P14,
class P15,
class P16,
class P17>
1040 TModuleProc17(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1042 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1043 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1044 P15 p15, P16 p16, P17 p17);
1045 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1046 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17){
1047 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12,
1048 p13,p14,p15,p16,p17);
1052template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1053 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1054 class P14,
class P15,
class P16,
class P17,
class P18>
1057 TModuleProcV18(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1059 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1060 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1061 P15 p15, P16 p16, P17 p17, P18 p18);
1062 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1063 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17, P18 p18){
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,
1070 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1071 class P14,
class P15,
class P16,
class P17,
class P18>
1074 TModuleProc18(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1076 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1077 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1078 P15 p15, P16 p16, P17 p17, P18 p18);
1079 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1080 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17, P18 p18){
1081 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12,
1082 p13,p14,p15,p16,p17,p18);
1086template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1087 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1088 class P14,
class P15,
class P16,
class P17,
class P18,
class P19>
1091 TModuleProcV19(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1093 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1094 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1095 P15 p15, P16 p16, P17 p17, P18 p18, P19 p19);
1096 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1097 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17,
1099 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13,p14,
1100 p15,p16,p17,p18,p19);
1104template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1105 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1106 class P14,
class P15,
class P16,
class P17,
class P18,
class P19>
1109 TModuleProc19(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1111 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1112 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1113 P15 p15, P16 p16, P17 p17, P18 p18, P19 p19);
1114 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1115 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17,
1117 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12,
1118 p13,p14,p15,p16,p17,p18,p19);
1122template <
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
class P7,
1123 class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1124 class P14,
class P15,
class P16,
class P17,
class P18,
class P19,
1128 TModuleProcV20(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1130 typedef void ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1131 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1132 P15 p15, P16 p16, P17 p17, P18 p18, P19 p19, P20 p20);
1133 void operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1134 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17,
1135 P18 p18, P19 p19, P20 p20){
1136 (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13,p14,
1137 p15,p16,p17,p18,p19,p20);
1141template <
class R,
class P1,
class P2,
class P3,
class P4,
class P5,
class P6,
1142 class P7,
class P8,
class P9,
class P10,
class P11,
class P12,
class P13,
1143 class P14,
class P15,
class P16,
class P17,
class P18,
class P19,
1147 TModuleProc20(
const TModule& module, TNarrowResId
id) : TModuleProc(module, id) {}
1149 typedef R ( WINAPI* TProc)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6,
1150 P7 p7, P8 p8, P9 p9, P10 p10, P11 p11,P12 p12, P13 p13, P14 p14,
1151 P15 p15, P16 p16, P17 p17, P18 p18, P19 p19, P20 p20);
1152 R operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9,
1153 P10 p10, P11 p11, P12 p12, P13 p13, P14 p14,P15 p15, P16 p16, P17 p17,
1154 P18 p18, P19 p19, P20 p20){
1155 return (
reinterpret_cast<TProc
>(Proc))(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12,
1156 p13,p14,p15,p16,p17,p18,p19,p20);
1173 static HICON
LoadIcon(HINSTANCE, LPCTSTR);
1175 static BOOL
GetClassInfo(HINSTANCE, LPCTSTR, LPWNDCLASS);
1200 static HRESULT
CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID*);
1229 return Name.c_str();
1265 return GetHandle() > HINSTANCE(HINSTANCE_ERROR);
1277 return ::GetModuleFileName(Handle, buff, maxChars);
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);
1576 PrevMode = ::SetErrorMode(mode);
1585 ::SetErrorMode(PrevMode);
#define PRECONDITION(condition)
Typically used to obtain information from a user, a dialog box is a window inside of which other cont...
TDocTemplate is an abstract base class that contains document template functionality.
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...
TModuleProc(const TModule &module, TNarrowResId id)
Constructs a Module entry object given a narrow Windows resource identifier.
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
static UINT SysStringLen(BSTR)
static TModule & GetModule()
static HRESULT SysFreeString(BSTR)
static BSTR SysAllocString(const OLECHAR *)
delay loading Ole32.DLL/COMPOBJ.DLL
static HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID *)
static TModule & GetModule()
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 DestroyIcon(HICON)
static UINT GetMenuState(HMENU, UINT, UINT)
static HICON LoadIcon(HINSTANCE, LPCTSTR)
static BOOL GetClassInfo(HINSTANCE, LPCTSTR, LPWNDCLASS)
static int GetMenuString(HMENU, UINT, TCHAR *, int, UINT)
static TModule & GetModule()
delay loading VERSION.DLL
static DWORD VerLanguageName(DWORD, TCHAR *, DWORD)
static BOOL VerQueryValue(const LPVOID, TCHAR *, LPVOID, uint *)
static BOOL GetFileVersionInfo(TCHAR *, DWORD, DWORD, LPVOID)
static DWORD GetFileVersionInfoSize(TCHAR *, LPDWORD)
static TModule & GetModule()
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].
STDAPI_(TDocTemplate **) GetDocTemplateHead(uint32 version)
#define DECLARE_STREAMABLE_OWL(cls, ver)
#define DECLARE_STREAMABLE_INLINES(cls)
TXOwl(const tstring &msg, uint resId=0)
An OWL exception with a given message for displaying and an unsigned Id that can be used for identifi...
TWindowClassName(LPCTSTR s)
void Throw()
Throws the exception.
TXInvalidModule(const tstring &name=tstring())
Creates the Invalid Module exception.
bool IsPreRelease() const
VS_FIXEDFILEINFO * FixedInfo
Fixed file info structure.
HACCEL LoadAccelerators(TResId id) const
Wrapper for the Windows API.
THandle GetHandle() const
Return the instance handle of the library module represented by the TModule obect.
static void Raise(const tstring &name=tstring())
Throws the exception.
auto GetClassInfo(TWindowClassName, WNDCLASS *wndclass) const -> bool
Retrieves information about the given window class.
HCURSOR LoadCursor(TResId id) const
Wrapper for the Windows API.
TFileSubType
TFileSubType values are returned by GetFileSubType() if GetFileType.
HICON LoadIcon(TResId name) const
Wrapper for the Windows API.
int LoadString(uint id, TCHAR *buf, int maxChars) const
Loads a string resource identified by id into the buffer pointed to by buff.
HGLOBAL LoadResource(HRSRC hRsrc) const
Wrapper for the Windows API.
tstring GetModuleFileName() const
String-aware overload.
int GetModuleFileName(TCHAR *buff, int maxChars) const
Returns the expanded file name (path and file name) of the file from which this module was loaded.
HRSRC FindResource(TResId id, TResId type) const
Wrapper for the Windows API to find a particular resource.
TModule(const tstring &name, bool shouldLoad=true, bool mustLoad=true, bool addToList=true)
Constructs a TModule object that is used as an alias for a DLL.
uint32 GetStrucVersion() const
void InitModule(THandle handle, const tstring &cmdLine)
Finish-up initialization of a module.
auto IsString() const -> bool
uint32 GetFileOS() const
returns TFileOS values
void Throw()
Throws the exception.
VS_FIXEDFILEINFO & GetFixedInfo()
Return the version information about this module.
tstring GetLanguageName() const
Return the language name of this module.
uint32 GetFileFlags() const
auto GetAtom() const -> ATOM
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().
static TModule * FindResModule(TResId id, TResId type)
Global search for resources.
auto IsAtom() const -> bool
TModuleVersionInfo(TModule::THandle module)
Constructs a TModuleVersionInfo given a module or instance handle.
TXModuleVersionInfo * Clone()
Creates a copy of the exception.
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).
HMENU LoadMenu(TResId id) const
Wrapper for the Windows API.
TXModuleVersionInfo(const tstring &name=tstring())
Create the exception.
auto IsRegisteredClass(TWindowClassName) const -> bool
Returns true if the given window class has been registered.
uint32 SizeofResource(HRSRC hRsrc) const
Wrapper for the Windows API.
uint8 * Buff
new'd File version info buffer
void SetHandle(THandle handle)
Set the module instance handle.
TFileType GetFileType() const
static void Raise(const tstring &name=tstring())
Throws the exception.
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).
static TModule * NextModule(TModule *module=nullptr)
void SetName(LPCTSTR name)
Accessor function that sets the name of the module.
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.
std::string LoadHtml(TResId) const
Loads the given HTML resource and returns it as a narrow string.
TSystemMessage()
default errorId, def language
HBITMAP LoadBitmap(TResId id) const
Wrapper for the Windows API.
virtual int Error(TXBase &x, uint captionResId, uint promptResId=0)
Replaceable exception handler; may be redefined to process OWL exceptions if canResume is false,...
int MessageBox(TWindow *wnd, const tstring &msg, const tstring &title, uint flags=MB_OK) const
HICON CopyIcon(HICON hIcon) const
Wrapper for the Windows API.
TXInvalidModule * Clone()
Creates a copy of the exception.
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.
void Init(TLangId langId)
@ 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.
@ TrueTypeFont
VFT2_FONT_TRUETYPE.
@ UnknownDevDriver
VFT2_UNKNOWN.
@ 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 int 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
TResIdT< char > TNarrowResId
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.