OWLNext    7.0
Borland's Object Windows Library for the modern age
Loading...
Searching...
No Matches
ocapp.h
Go to the documentation of this file.
1//----------------------------------------------------------------------------
2// ObjectComponents
3// Copyright (c) 1994, 1996 by Borland International, All Rights Reserved
4/// \file
5/// Definition of TOcApp application connection class
6//----------------------------------------------------------------------------
7
8#if !defined(OCF_OCAPP_H)
9#define OCF_OCAPP_H
10
11#include <owl/private/defs.h>
12#if defined(BI_HAS_PRAGMA_ONCE)
13# pragma once
14#endif
15
16#include <ocf/ocbocole.h>
17#include <ocf/ocobject.h>
18#include <ocf/ocreg.h>
19#include <ocf/autodefs.h>
20#include <ocf/ocdata.h>
21#include <ocf/ocapp.rh>
22#include <owl/dispatch.h>
23#include <owl/contain.h>
24
25namespace owl {class _OWLCLASS TRegLink;};
26namespace owl {class _OWLCLASS TRegList;};
27
28namespace ocf {
29
30// Generic definitions/compiler options (eg. alignment) preceeding the
31// definition of classes
32#include <owl/preclass.h>
33
35class _ICLASS TOcClassMgr;
37
38//
39// OCF Mixin classes for users derived application class
40//
41#if !defined(_OCMCLASS)
42# define _OCMCLASS
43#endif
46
47//
48/// \class TOcFormatName
49// ~~~~~ ~~~~~~~~~~~~~
50/// Clipboard format name
51//
53 public:
55 TOcFormatName(LPCTSTR fmtName, LPCTSTR fmtResultName, LPCTSTR id = 0);
56
57 bool operator ==(const TOcFormatName& other) const {return owl::ToBool(&other == this);}
58 LPCTSTR GetId() const {return Id.c_str();}
59 LPCTSTR GetName() const {return Name.c_str();}
60 LPCTSTR GetResultName() const {return ResultName.c_str();}
61
62 private:
63 owl::tstring Id; // internal clipboard format name
64 owl::tstring Name; // external name of clipboard format (used in list box)
65 owl::tstring ResultName; // string to be used in the dialog help text
66};
67
68//
69/// \class TOcNameList
70// ~~~~~ ~~~~~~~~~~~
71/// Clipboard format names
72//
73class _OCFCLASS TOcNameList : protected owl::TIPtrArray<TOcFormatName*>
74{
75 public:
78
79 TOcFormatName*& operator [](unsigned index) { return Base::operator[](index);}
80 TOcFormatName* operator [](LPTSTR);
81 void Clear(int del = 1) { Base::Flush(del==1);}
82 int Add(TOcFormatName* name) { return Base::Add(name);}
83 bool IsEmpty() const { return Base::Empty();}
84 bool Find(const TOcFormatName* name) { return Base::Find((TOcFormatName*)name); }
85 owl::uint Count() const { return Base::Size();}
86 bool Detach(TOcFormatName* item, bool del = false)
87 {
88 return del ? Base::DestroyItem(item) : Base::DetachItem(item);
89 }
90
91 private:
93};
94
95#if defined(_OCFDLL) || defined(BI_APP_DLL)
96 //
97 // Export template of owl::TIPtrArray<TOcFormatName*> when building ObjectWindows
98 // DLL and provide import declaration of DLL instance for users of the class.
99 //
100 template class owl::TIPtrArray<TOcFormatName*>;
101#endif
102
103
104//
105/// \class TOcRegistrar
106// ~~~~~ ~~~~~~~~~~~~
107/// Linking & embeding version of the Registrar
108//
110 public:
112 owl::uint32 preselectedOptions, owl::tstring& cmdLine,
113 owl::TRegLink* linkHead = 0,
114 owl::TModule* module = & owl::GetGlobalModule());
116
117 void CreateOcApp(owl::uint32 options, TOcAppHost* host,
118 TOcAppFrameHost* frameHost);
119 void CreateOcApp(owl::uint32 options, TOcApp*& ret);
120 IBClassMgr* CreateBOleClassMgr();
121
122 void SetApp(TOcApp* app);
123
124 protected:
125 void * GetFactory(const GUID& clsid, const GUID & iid);
126 bool CanUnload();
127 void LoadBOle();
128
129 private:
130 HINSTANCE BOleInstance;// BOle DLL instance
131 IBClassMgr* BCmI; //
132 TOcClassMgr* OcClassMgr; // our IBClassMgr implementation
133 int AppCount; // TOcApp instance count
134 friend class _ICLASS TOcApp;
135};
136
137//
138/// \class TOcApp
139// ~~~~~ ~~~~~~
140/// OCF Application class.
141//
142class _ICLASS TOcApp : public TUnknown,
143 private IBApplication,
144 private IBClassMgr {
145 public:
146 // Constructor for OcApp & 2nd part of initialization
147 // host & frameHost are interfaces that OcApp talks back to.
148 //
149 TOcApp(TOcRegistrar& registrar, owl::uint32 options, TOcAppHost* host,
150 TOcAppFrameHost* frameHost);
151 void SetupWindow(TOcAppFrameHost* frameHost);
152
153 // !CQ compatibility only
154 // Constructor for OcApp & 2nd part of initialization
155 // retOcApp is location holding unrefcounted pointer to this OcApp
156 //
157 TOcApp(TOcRegistrar& registrar, owl::uint32 options, TOcApp*& retOcApp);
158 void SetupWindow(HWND frameWnd);
159
160 // Public accessors
161 //
163 owl::tstring GetName() const {return (LPCTSTR)Name;}
164 bool IsOptionSet(owl::uint32 option) const;
165 void SetOption(owl::uint32 bit, bool state);
166
167 // Object reference & lifetime managment
168 //
169 virtual void ReleaseObject();
170
171 // Runtime class factory [un]registration
172 //
173 void RegisterClasses();
174 void UnregisterClasses();
175
176 // Clipboard
177 //
178 void AddUserFormatName(LPCTSTR name, LPCTSTR resultName,
179 LPCTSTR id = 0);
180 TOcNameList& GetNameList() {return NameList;}
181
182 // App side exposure of selected IBService functions
183 //
184 bool UnregisterClass(const owl::tstring& progid);
185 void EvResize();
186 void EvActivate(bool);
187 bool EvSetFocus(bool set) {return HRSucceeded(BServiceI->OnSetFocus(set));}
188 bool RegisterClass(const owl::tstring& progid, BCID classId, bool multiUse);
189 bool TranslateAccel(MSG * msg)
190 {return HRSucceeded(BServiceI->TranslateAccel(msg));}
191 bool ModalDialog(bool enable)
192 {return HRSucceeded(BServiceI->OnModalDialog(enable));}
194 {return BServiceI->HelpMode(newMode);}
195 bool CanClose();
196
197 bool Browse(TOcInitInfo& initInfo);
198 bool BrowseControls(TOcInitInfo& initInfo);
199 bool BrowseClipboard(TOcInitInfo& initInfo);
200 bool Paste(TOcInitInfo& initInfo);
201 bool Copy(TOcPart* ocPart);
202 bool Copy(TOcDataProvider* ocData);
203 bool Drag(TOcDataProvider* ocData, TOcDropAction inAction, TOcDropAction& outAction);
204 bool Drag(TOcPart* ocData, TOcDropAction inAction, TOcDropAction& outAction);
205 bool Convert(TOcPart* ocPart, bool b);
206 owl::uint EnableEditMenu(TOcMenuEnable enable, IBDataConsumer * ocview);
207
208 // Exposure of BOle's componentCreate for internal OCF support
209 //
210 HRESULT BOleComponentCreate(IUnknown * * retIface,
211 IUnknown * outer, owl::uint32 idClass);
212
213 // Internal reference management
214 //
215 owl::ulong _IFUNC AddRef() {return GetOuter()->AddRef();}
216 owl::ulong _IFUNC Release() {return GetOuter()->Release();}
217 HRESULT _IFUNC QueryInterface(const GUID & iid, void ** iface)
218 {return GetOuter()->QueryInterface(iid, iface);}
219 protected:
220 ~TOcApp();
221
224
227
228// !CQ Ripping out the next guys
229 TOcApp** OcAppPtr; // Pointer to this instance, must zero on destruction
230// !CQ owl::TResult ForwardEvent(int eventId, const void* param);
231// !CQ owl::TResult ForwardEvent(int eventId, owl::TParam2 param = 0);
232
233 // TUnknown virtual overrides
234 //
235 HRESULT QueryObject(const IID & iid, void * * iface);
236
237 private:
238
239 // IBWindow implementation
240 //
241 HWND _IFUNC GetWindow();
242 HRESULT _IFUNC GetWindowRect(owl::TRect * r);
243 LPCOLESTR _IFUNC GetWindowTitle();
244 void _IFUNC AppendWindowTitle(LPCOLESTR title);
245 HRESULT _IFUNC SetStatusText(LPCOLESTR text);
246
247 HRESULT _IFUNC RequestBorderSpace(const owl::TRect *);
248 HRESULT _IFUNC SetBorderSpace(const owl::TRect *);
249
250 HRESULT _IFUNC InsertContainerMenus(HMENU hMenu, TOcMenuWidths * omw);
251 HRESULT _IFUNC SetFrameMenu(HMENU hMenu);
252 void _IFUNC RestoreUI();
253 HRESULT _IFUNC Accelerator(MSG * msg);
254 HRESULT _IFUNC GetAccelerators(HACCEL *, int *);
255
256 // IBApplication implementation
257 //
258 LPCOLESTR _IFUNC GetAppName();
259 TOcHelp _IFUNC HelpMode(TOcHelp newMode);
260 HRESULT _IFUNC CanLink();
261 HRESULT _IFUNC CanEmbed();
262 HRESULT _IFUNC IsMDI();
263 HRESULT _IFUNC OnModalDialog(BOOL svrModal);
264 void _IFUNC DialogHelpNotify(TOcDialogHelp);
265 void _IFUNC ShutdownMaybe();
266
267 // IBClassMgr implementation
268 //
269 HRESULT _IFUNC ComponentCreate(IUnknown * * ret,
270 IUnknown * outer, owl::uint32 classId);
271 HRESULT _IFUNC ComponentInfoGet(IUnknown * * info,
272 IUnknown * outer, owl::uint32 classId);
273
274 void Init();
275
276 TOcRegistrar& Registrar; // Overall application description object
277
278 // BOle side support
279 //
280 IBClassMgr* BCmI; // Our private class maneger
281 IUnknown* BService; // BOle service object & interface
282 IBService2* BServiceI; //
283
285 TOcNameList NameList;
286 bool DisableDlgs; // Server went modal--disable our dialogs
287
288 friend class _ICLASS TOcDocument;
289 friend class _ICLASS TOcPart;
290 friend class _ICLASS TOcRemView;
291 friend class _ICLASS TOcView;
292 friend class _ICLASS TOcClassMgr;
293};
294
295//
296//inline void TOcApp::SetupWindow(TOcAppFrameSocket* frameSocket)
297//{
298// FrameSocket = frameSocket;
299//}
300
301//
302inline bool TOcApp::IsOptionSet(owl::uint32 option) const
303{
304 return owl::ToBool(Options & option);
305}
306
307//
308inline void TOcApp::SetOption(owl::uint32 bit, bool state)
309{
310 if (state)
311 Options |= bit;
312 else
313 Options &= ~bit;
314}
315
316//
318 TOcAppFrameHost* frameHost)
319{
320 new TOcApp(*this, options, host, frameHost);
321}
322
323//
324// Compatibility version of TOcApp creator
325//
326inline void TOcRegistrar::CreateOcApp(owl::uint32 options, TOcApp*& retOcApp)
327{
328 new TOcApp(*this, options, retOcApp);
329}
330
331//----------------------------------------------------------------------------
332
333//
334// ObjectComponents message and subdispatch IDs
335//
336#define WM_BCXNAME (0x7FFF-8) // (WM_VBXNAME) BCX event fire by name
337#define WM_OCEVENT (WM_BCXNAME-1) // OC -> app messages
338
339//
340// Subdispatch IDs for TOcApp clients
341//
342#define OC_APPINSMENUS 0x0100 // Main window insert menus
343#define OC_APPMENUS 0x0101 // Main window set menu
344#define OC_APPPROCESSMSG 0x0102 // Process msg for accel, etc
345#define OC_APPFRAMERECT 0x0103 // Get inner rect of main window
346#define OC_APPBORDERSPACEREQ 0x0104 // Request/set app frame border space
347#define OC_APPBORDERSPACESET 0x0105 // Request/set app frame border space
348#define OC_APPSTATUSTEXT 0x0106 // Set the status text
349#define OC_APPRESTOREUI 0x0107 // Have the app frame restore its UI
350#define OC_APPDIALOGHELP 0x0108 // Ole dialog help button pressed
351#define OC_APPSHUTDOWN 0x0109 // Shutdown app frame window
352#define OC_APPGETACCEL 0x010A // Get accelerators for menu merge
353
354//
355// struct TOcGetAccel
356// ~~~~~~ ~~~~~~~~~~~
358 HACCEL Accel;
359 int Count;
360};
361
362//
363/// \class TOcAppHost
364// ~~~~~ ~~~~~~~~~~
365/// OCF Application host class. Owner of & host for a TOcApp object
366//
368 public:
369 TOcAppHost() : OcApp(0) {} // Must call OcInit after construction
370 ~TOcAppHost();
371
372 void OcInit(TOcRegistrar& registrar, owl::uint32 options);
373 TRegistrar& GetRegistrar() {return OcApp->GetRegistrar();}
374
375 bool IsOptionSet(owl::uint32 option) const;
376
377 virtual void AttachHost(TOcApp* ocApp) {OcApp = ocApp;}
378 virtual void ReleaseOcObject() {OcApp = 0;}
379
380// protected:
381 TOleAllocator OleMalloc; // default to task allocator
383
384 private:
385 owl::uint32 InitOptions;
386};
387
388// Old name don't use it;
389// typedef not work with dynamic_cast of VC ++
390//typedef TOcAppHost TOcModule;
391class TOcModule: public TOcAppHost {
392 public:
395};
396
397//
398/// \class TOcAppFrameHost
399// ~~~~~ ~~~~~~~~~~~~~~~
400/// OCF Application frame window host class. Receives window events from OcApp
401//
403 public:
404 TOcAppFrameHost(TOcApp* ocApp=0) : OcApp(ocApp) {}
405
406 virtual void ReleaseOcObject() {OcApp = 0;}
407
408 virtual bool EvOcAppInsMenus(TOcMenuDescr & sharedMenu) = 0;
409 virtual bool EvOcAppMenus(TOcMenuDescr & md) = 0;
410 virtual bool EvOcAppProcessMsg(MSG * msg) = 0;
411 virtual bool EvOcAppFrameRect(owl::TRect * rect) = 0;
412 virtual bool EvOcAppBorderSpaceReq(owl::TRect * rect) = 0;
413 virtual bool EvOcAppBorderSpaceSet(owl::TRect * rect) = 0;
414 virtual void EvOcAppStatusText(const char * rect) = 0;
415 virtual void EvOcAppRestoreUI() = 0;
416 virtual void EvOcAppDialogHelp(TOcDialogHelp & dh) = 0;
417 virtual bool EvOcAppShutdown() = 0;
418 virtual bool EvOcAppGetAccel(TOcGetAccel * acc) = 0;
419
420 virtual HWND EvOcGetWindow() const = 0;
421
422 // For compatibility
423 virtual void SetWindow(HWND) {}
424
425 protected:
426 TOcApp* OcApp; // !CQ really want this?
427};
428
429//
430/// \class TOcAppFrameHostMsg
431// ~~~~~ ~~~~~~~~~~~~~~~~~~
432/// Default implementation of frame window host that uses messages
433//
435 public:
436 TOcAppFrameHostMsg(TOcApp* ocApp) : Wnd(0), TOcAppFrameHost(ocApp) {}
437
438 void ReleaseOcObject() {delete this;} // We are no longer needed by Oc
439
440 bool EvOcAppInsMenus(TOcMenuDescr & sharedMenu);
441 bool EvOcAppMenus(TOcMenuDescr & md);
442 bool EvOcAppProcessMsg(MSG * msg);
443 bool EvOcAppFrameRect(owl::TRect * rect);
444 bool EvOcAppBorderSpaceReq(owl::TRect * rect);
445 bool EvOcAppBorderSpaceSet(owl::TRect * rect);
446 void EvOcAppStatusText(const char * rect);
447 void EvOcAppRestoreUI();
448 void EvOcAppDialogHelp(TOcDialogHelp & dh);
449 bool EvOcAppShutdown();
450 bool EvOcAppGetAccel(TOcGetAccel * acc);
451
452 HWND EvOcGetWindow() const {return Wnd;}
453
454 void SetWindow(HWND hWnd) {Wnd = hWnd;}
455
456 protected:
457 owl::TResult ForwardEvent(int eventId, const void* param);
458 owl::TResult ForwardEvent(int eventId, owl::TParam2 param = 0);
459
460 private:
461 HWND Wnd;
462};
463
464//
466{
467 if (OcApp)
468 OcApp->ReleaseObject(); // don't delete, just release OC object
469}
470
471inline bool TOcAppHost::IsOptionSet(owl::uint32 option) const
472{
473 return OcApp ? OcApp->IsOptionSet(option) : (InitOptions & option) != 0;
474}
475
476inline void TOcAppHost::OcInit(TOcRegistrar& registrar, owl::uint32 options)
477{
478 InitOptions = options;
479 registrar.CreateOcApp(options, OcApp);
480}
481
482// Generic definitions/compiler options (eg. alignment) following the
483// definition of classes
484#include <owl/posclass.h>
485
486} // OCF namespace
487
488
489#endif // OCF_OCAPP_H
OLE Automation Class Definitions.
IClassMgr abstract base class.
Definition ocbocole.h:184
IBDataConsumer – Supported by containers who want to accept drag/drop and paste.
Definition ocbocole.h:212
OCF Application frame window host class. Receives window events from OcApp.
Definition ocapp.h:402
virtual void EvOcAppRestoreUI()=0
virtual HWND EvOcGetWindow() const =0
virtual bool EvOcAppInsMenus(TOcMenuDescr &sharedMenu)=0
virtual void SetWindow(HWND)
Definition ocapp.h:423
TOcAppFrameHost(TOcApp *ocApp=0)
Definition ocapp.h:404
virtual bool EvOcAppProcessMsg(MSG *msg)=0
virtual bool EvOcAppGetAccel(TOcGetAccel *acc)=0
virtual void EvOcAppDialogHelp(TOcDialogHelp &dh)=0
virtual bool EvOcAppShutdown()=0
virtual bool EvOcAppBorderSpaceReq(owl::TRect *rect)=0
virtual bool EvOcAppFrameRect(owl::TRect *rect)=0
virtual void EvOcAppStatusText(const char *rect)=0
virtual bool EvOcAppMenus(TOcMenuDescr &md)=0
virtual bool EvOcAppBorderSpaceSet(owl::TRect *rect)=0
virtual void ReleaseOcObject()
Definition ocapp.h:406
Default implementation of frame window host that uses messages.
Definition ocapp.h:434
void SetWindow(HWND hWnd)
Definition ocapp.h:454
HWND EvOcGetWindow() const
Definition ocapp.h:452
TOcAppFrameHostMsg(TOcApp *ocApp)
Definition ocapp.h:436
OCF Application host class. Owner of & host for a TOcApp object.
Definition ocapp.h:367
bool IsOptionSet(owl::uint32 option) const
Definition ocapp.h:471
virtual void ReleaseOcObject()
Definition ocapp.h:378
virtual void AttachHost(TOcApp *ocApp)
Definition ocapp.h:377
TOcApp * OcApp
Definition ocapp.h:382
TRegistrar & GetRegistrar()
Definition ocapp.h:373
void OcInit(TOcRegistrar &registrar, owl::uint32 options)
Definition ocapp.h:476
TOleAllocator OleMalloc
Definition ocapp.h:381
OCF Application class.
Definition ocapp.h:144
friend class _ICLASS TOcPart
Definition ocapp.h:289
friend class _ICLASS TOcDocument
Definition ocapp.h:288
owl::ulong _IFUNC AddRef()
Definition ocapp.h:215
TOcApp ** OcAppPtr
Definition ocapp.h:229
friend class _ICLASS TOcView
Definition ocapp.h:291
TOcHelp AppHelpMode(TOcHelp newMode)
Definition ocapp.h:193
TOcAppHost * Host
Definition ocapp.h:225
bool Registered
Definition ocapp.h:223
owl::ulong _IFUNC Release()
Definition ocapp.h:216
friend class _ICLASS TOcRemView
Definition ocapp.h:290
TOcAppFrameHost * FrameHost
Definition ocapp.h:226
owl::tstring GetName() const
Definition ocapp.h:163
void SetOption(owl::uint32 bit, bool state)
Definition ocapp.h:308
bool TranslateAccel(MSG *msg)
Definition ocapp.h:189
bool EvSetFocus(bool set)
Definition ocapp.h:187
virtual void ReleaseObject()
Should only be called by the owner/creator of this object.
Definition ocapp.cpp:173
friend class _ICLASS TOcClassMgr
Definition ocapp.h:292
bool IsOptionSet(owl::uint32 option) const
Definition ocapp.h:302
HRESULT _IFUNC QueryInterface(const GUID &iid, void **iface)
Definition ocapp.h:217
TOcNameList & GetNameList()
Definition ocapp.h:180
owl::uint32 Options
Definition ocapp.h:222
TOcRegistrar & GetRegistrar()
Definition ocapp.h:162
bool ModalDialog(bool enable)
Definition ocapp.h:191
Data Provider object for a container document.
Definition ocdata.h:30
Clipboard format name.
Definition ocapp.h:52
LPCTSTR GetName() const
Definition ocapp.h:59
LPCTSTR GetId() const
Definition ocapp.h:58
LPCTSTR GetResultName() const
Definition ocapp.h:60
Clipboard format names.
Definition ocapp.h:74
bool Detach(TOcFormatName *item, bool del=false)
Definition ocapp.h:86
int Add(TOcFormatName *name)
Definition ocapp.h:82
owl::uint Count() const
Definition ocapp.h:85
bool IsEmpty() const
Definition ocapp.h:83
void Clear(int del=1)
Definition ocapp.h:81
bool Find(const TOcFormatName *name)
Definition ocapp.h:84
OC part class represents an embeded or linked part in a document.
Definition ocpart.h:38
Linking & embeding version of the Registrar.
Definition ocapp.h:109
friend class _ICLASS TOcApp
Definition ocapp.h:134
void CreateOcApp(owl::uint32 options, TOcAppHost *host, TOcAppFrameHost *frameHost)
Definition ocapp.h:317
Object to initialize OLE and access memory manager.
Definition oleutil.h:106
Application registration manager interface class.
Definition ocreg.h:109
Standard implementation of a controlling IUnknown for an object, to be inherited with other COM inter...
Definition oleutil.h:264
ObjectWindows dynamic-link libraries (DLLs) construct an instance of TModule, which acts as an object...
Definition module.h:75
TRect is a mathematical class derived from tagRect.
Definition geometry.h:308
A registration parameter table, composed of a list of TRegItems.
Definition registry.h:531
Reference to reference counted string object TUString Lightweight reference object consisting of a po...
Definition string.h:67
Definition of container classes used and made available by OWL.
Dispatch functions (crackers) to crack a Windows message and pass control to a member function via a ...
Object Component Framework (COM encapsulation)
Definition appdesc.h:22
TOcDialogHelp
Definition ocobject.h:27
TOcMenuEnable
Definition ocobject.h:145
owl::uint32 BCID
Definition ocbocole.h:109
IUnknown *(* TComponentFactory)(IUnknown *outer, owl::uint32 options, owl::uint32 id)
Definition appdesc.h:35
bool HRSucceeded(HRESULT hr)
Definition defs.h:131
const GUID & iid
Definition appdesc.h:328
class _ICLASS TOcApp
Definition ocapp.h:36
TOcHelp
Definition ocobject.h:152
class _ICLASS IBApplication
Definition ocbocole.h:138
TOcDropAction
Definition ocobject.h:39
Object Windows Library (OWLNext Core)
Definition animctrl.h:22
unsigned long ulong
Definition number.h:26
unsigned long uint32
Definition number.h:34
LPARAM TParam2
Second parameter type.
Definition dispatch.h:55
bool ToBool(const T &t)
Definition defs.h:291
LRESULT TResult
Result type.
Definition dispatch.h:52
std::string tstring
Definition defs.h:79
unsigned int uint
Definition number.h:25
TModule & GetGlobalModule()
Definition global.cpp:48
#define _OCMCLASS
Definition ocapp.h:42
ObjectComponents BOcOle engine linking & embedding interfaces.
Definition of TOcDataProvider Class.
#define _OCFCLASS
Definition defs.h:45
Various general OC enums and structs.
OLE Registration definitions.
owl::TPointer< ocf::TRegistrar > Registrar
Global registrar object defined by the client application.
#define _IFUNC
Definition oleutil.h:28
#define _ICLASS
Definition oleutil.h:25
#define _OWLCLASS
Definition defs.h:338
HACCEL Accel
Definition ocapp.h:358