home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 May
/
Pcwk5b98.iso
/
Borland
/
Cplus45
/
BC45
/
EXPERT.PAK
/
CMDIDOCV.OWL
< prev
next >
Wrap
Text File
|
1995-08-29
|
18KB
|
539 lines
##{cheader.snp}
#include <owl\owlpch.h>
#pragma hdrstop
##@OPT_APPL_DRAGDROP 2
#include <dir.h>
##QUERY_FILE_H [[FileName]]
#include "[[FileName]]"
##<<TMDIClient QUERY_FILE_H [[FileName]]
#include "[[FileName]]"
##<<TMDIChild QUERY_FILE_H [[FileName]]
#include "[[FileName]]"
##OPT_DV_RESET
##OPT_DV_NEXT
##QUERY_DV_TVIEW [[WindowClient]]
##<<*WindowClient QUERY_FILE_H [[FileName]]
#include "[[FileName]]"
##<<TDialog QUERY_FILE_H [[Filename]]
#include "[[Filename]]" // Definition of about dialog.
##--BEGIN-- @OPT_APPL_HELP
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Generated help file.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
##@QUERY_APPL_HELP [[HelpFile]]
const char HelpFileName[] = "[[HelpFile]].hlp";
##--END-- @OPT_APPL_HELP
##{cdragdrp.owl}
//{{[[TApplication]] Implementation}}
##--BEGIN-- @QUERY_APPL_OLE_AUTO
//
// OLE's ITypeInfo browses this symbol table for a list of all data,
// properties, and methods exposed by this automated class.
//
##@QUERY_APPL_OLE != VALUE_NOOLE
DEFINE_AUTOAGGREGATE([[TApplication]], OcApp->Aggregate)
##@QUERY_APPL_OLE == VALUE_NOOLE
DEFINE_AUTOCLASS([[TApplication]])
EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
EXPOSE_QUIT("Quit", "Quit application", 0)
//{{[[TApplication]]SYM_TBL_BEGIN}}
//{{[[TApplication]]SYM_TBL_END}}
##@QUERY_APPL_OLE != VALUE_NOOLE
END_AUTOAGGREGATE([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
##@QUERY_APPL_OLE == VALUE_NOOLE
END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
##--END-- @QUERY_APPL_OLE_AUTO
##((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO) 2
DEFINE_APP_DICTIONARY(AppDictionary);
##((@QUERY_APPL_OLE == VALUE_NOOLE) && @QUERY_APPL_OLE_AUTO)
static TPointer<TRegistrar> Registrar;
##((@QUERY_APPL_OLE != VALUE_NOOLE)
static TPointer<TOcRegistrar> Registrar;
##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO)
REGISTRATION_FORMAT_BUFFER(100)
BEGIN_REGISTRATION(ApplicationReg)
##@QUERY_OLE_GUID [[GUID]]
REGDATA(clsid, "{[[GUID]]}")
##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH) || @QUERY_APPL_OLE_AUTO) 2
REGDATA(appname, "[[AppTitle]] Server")
REGDATA(description, "[[AppTitle]] Server Application")
##((@QUERY_APPL_OLE == VALUE_CONTAINER) && !@QUERY_APPL_OLE_AUTO) 2
REGDATA(appname, "[[AppTitle]] Container")
REGDATA(description, "[[AppTitle]] Container Application")
##@QUERY_APPL_OLE_AUTO
REGDATA(progid, "[[AppTitle]].Application.1")
##--END-- @QUERY_PRJ_NAME [[AppTitle]]
##@QUERY_APPL_OLE_AUTO
REGDATA(cmdline, "/Automation")
##!@QUERY_APPL_OLE_AUTO
REGDATA(cmdline, "")
##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
REGDATA(usage, ocrMultipleUse)
##--BEGIN-- @QUERY_APPL_OLE_AUTO
// REGDATA(debugger, "TDW")
##--END-- @QUERY_APPL_OLE_AUTO
END_REGISTRATION
##--END-- @QUERY_APPL_OLE != VALUE_NOOLE
##@QUERY_APPL_OLE != VALUE_NOOLE
##: {AddOleDV.SNP}
##*
##@QUERY_APPL_OLE == VALUE_NOOLE
##: {AddDocV.SNP}
##*
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Build a response table for all messages/commands handled
// by the application.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
//{{[[TApplication]]RSP_TBL_BEGIN}}
EV_OWLVIEW(dnCreate, EvNewView),
EV_OWLVIEW(dnClose, EvCloseView),
##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
##@OPT_APPL_HELP 2
##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
EV_COMMAND(CM_HELPUSING, CmHelpUsing),
##@OPT_APPL_DRAGDROP
##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
EV_WM_DROPFILES,
##@OPT_APPL_PRINTING
##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
EV_WM_WININICHANGE,
//{{[[TApplication]]RSP_TBL_END}}
END_RESPONSE_TABLE;
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// =====
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
##((@QUERY_APPL_OLE == VALUE_NOOLE) && (@QUERY_APPL_OLE_AUTO))
[[TApplication]]::[[TApplication]] () : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
##@QUERY_APPL_OLE != VALUE_NOOLE
[[TApplication]]::[[TApplication]] () : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
##((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
##QUERY_WIND_TITLE [[Title]]
[[TApplication]]::[[TApplication]] () : TApplication("[[Title]]")
{
##@OPT_APPL_HELP 4
HelpState = false;
ContextHelp = false;
HelpCursor = 0;
##@OPT_APPL_PRINTING 3
Printer = 0;
Printing = 0;
SetDocManager(new TDocManager(dmMDI, this));
// INSERT>> Your constructor code here.
}
[[TApplication]]::~[[TApplication]] ()
{
##@OPT_APPL_PRINTING 3
if (Printer)
delete Printer;
// INSERT>> Your destructor code here.
}
##--BEGIN-- @OPT_APPL_HELP
bool [[TApplication]]::CanClose ()
{
bool result = TApplication::CanClose();
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Close the help engine if we used it.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
if (result && HelpState)
GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0L);
return result;
}
##--END-- @OPT_APPL_HELP
##--BEGIN-- @OPT_APPL_TOOLBAR
void [[TApplication]]::CreateGadgets (TControlBar *cb, bool server)
{
if (!server) {
cb->Insert(*new TButtonGadget(CM_MDIFILENEW, CM_MDIFILENEW));
cb->Insert(*new TButtonGadget(CM_MDIFILEOPEN, CM_MDIFILEOPEN));
cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
cb->Insert(*new TSeparatorGadget(6));
}
cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
##--BEGIN-- @OPT_APPL_PRINTING
if (!server) {
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
}
##--END-- @OPT_APPL_PRINTING
##@OPT_APPL_HELP 3
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Add fly-over help hints.
cb->SetHintMode(TGadgetWindow::EnterHints);
}
##@QUERY_APPL_OLE == VALUE_NOOLE
void [[TApplication]]::SetupSpeedBar (TDecoratedMDIFrame *frame)
##@QUERY_APPL_OLE != VALUE_NOOLE
void [[TApplication]]::SetupSpeedBar (TOleMDIFrame *frame)
{
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Create default toolbar New and associate toolbar buttons with commands.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
TControlBar* cb = new TControlBar(frame);
CreateGadgets(cb);
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Setup the toolbar ID used by OLE 2 for toolbar negotiation.
cb->Attr.Id = IDW_TOOLBAR;
frame->Insert(*cb, TDecoratedFrame::Top);
}
##--END-- @OPT_APPL_TOOLBAR
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// =====
// Application intialization.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
void [[TApplication]]::InitMainWindow ()
{
if (nCmdShow != SW_HIDE)
##@QUERY_APPL_STARTUP == VALUE_NORMAL
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
##@QUERY_APPL_STARTUP == VALUE_MIN
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
##@QUERY_APPL_STARTUP == VALUE_MAX
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
mdiClient = new [[TMDIClient]](this);
##@OPT_APPL_STATUSBAR 2
##@QUERY_APPL_OLE != VALUE_NOOLE
TOleMDIFrame* frame = new TOleMDIFrame(Name, MDI_MENU, *mdiClient, true, this);
##@QUERY_APPL_OLE == VALUE_NOOLE
TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, MDI_MENU, *mdiClient, true, this);
##!@OPT_APPL_STATUSBAR 2
##@QUERY_APPL_OLE != VALUE_NOOLE
TOleMDIFrame* frame = new TOleMDIFrame(Name, MDI_MENU, *mdiClient, false, this);
##@QUERY_APPL_OLE == VALUE_NOOLE
TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, MDI_MENU, *mdiClient, false, this);
##QUERY_WIND_STYLE [[StyleAttributes]]
##StyleAttributes != "" 3
// Override the default window style for the main window.
[[StyleAttributes]]
##QUERY_WIND_BACKGRND [[BackgroundColor]]
##BackgroundColor != "" 3
// Change the window's background color
frame->SetBkgndColor([[BackgroundColor]]);
##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
##@QUERY_APPL_STARTUP == VALUE_NORMAL
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
##@QUERY_APPL_STARTUP == VALUE_MIN
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
##@QUERY_APPL_STARTUP == VALUE_MAX
nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Assign ICON w/ this application.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
frame->SetIcon(this, IDI_MDIAPPLICATION);
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Menu associated with window and accelerator table associated with table.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
frame->AssignMenu(MDI_MENU);
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Associate with the accelerator table.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
frame->Attr.AccelTable = MDI_MENU;
##@OPT_APPL_TOOLBAR
SetupSpeedBar(frame);
##@OPT_APPL_STATUSBAR 7
TStatusBar *sb = new TStatusBar(frame, TGadget::Recessed,
TStatusBar::CapsLock |
TStatusBar::NumLock |
TStatusBar::ScrollLock |
TStatusBar::Overtype);
frame->Insert(*sb, TDecoratedFrame::Bottom);
SetMainWindow(frame);
frame->SetMenuDescr(TMenuDescr(MDI_MENU));
##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_3D
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Windows 3-D controls.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
EnableCtl3d(true);
##--END-- @QUERY_APPL_CONTROL==VALUE_3D
##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Borland Windows custom controls.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
EnableBWCC();
##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
}
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// =====
// Response Table handlers:
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
void [[TApplication]]::EvNewView (TView& view)
{
##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
TOleView* ov = TYPESAFE_DOWNCAST(&view, TOleView);
// If we're embedded and we're opening out of place then don't create the child window.
if (view.GetDocument().IsEmbedded() && ov && !ov->IsOpenEditing()) {
TWindow* vw = view.GetWindow();
vw->SetParent(TYPESAFE_DOWNCAST(GetMainWindow(), TOleFrame)->GetRemViewBucket());
vw->Create();
} else {
TMDIClient *mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
if (mdiClient) {
##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
[[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, 0);
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Associate ICON w/ this child window.
child->SetIcon(this, IDI_DOC);
##@QUERY_APPL_OLE != VALUE_NOOLE 3
if (view.GetViewMenu())
child->SetMenuDescr(*view.GetViewMenu());
child->Create();
child->SetClientWindow(view.GetWindow());
}
}
if (!ov || !ov->GetOcRemView())
OcApp->SetOption(amEmbedding, false);
##--END-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
TMDIClient *mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
if (mdiClient) {
##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
[[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, view.GetWindow());
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Associate ICON w/ this child window.
child->SetIcon(this, IDI_DOC);
##@QUERY_APPL_OLE != VALUE_NOOLE 3
if (view.GetViewMenu())
child->SetMenuDescr(*view.GetViewMenu());
child->Create();
}
##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
}
void [[TApplication]]::EvCloseView (TView&)
{
}
##--BEGIN-- @OPT_APPL_HELP
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// =====
// Menu Help Contents command
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
void [[TApplication]]::CmHelpContents ()
{
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Show the help table of contents.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0L);
}
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// =====
// Menu Help Using Help command
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
void [[TApplication]]::CmHelpUsing ()
{
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Display the contents of the Windows help file.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0L);
}
##--END-- @OPT_APPL_HELP
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//////////////////////////////////////////////////////////
// [[TApplication]]
// ===========
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
##@QUERY_TARGET_NAME [[Target]]
// Menu Help About [[Target]] command
void [[TApplication]]::CmHelpAbout ()
{
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
//
// Show the modal dialog.
//
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
##--BEGIN-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
[[TDialog]](&TWindow(::GetFocus(), this)).Execute();
##((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
[[TDialog]](GetMainWindow()).Execute();
##--END-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
}
##--BEGIN-- @OPT_APPL_DRAGDROP
void [[TApplication]]::InitInstance ()
{
TApplication::InitInstance();
##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Accept files via drag/drop in the frame window.
GetMainWindow()->DragAcceptFiles(true);
}
void [[TApplication]]::EvDropFiles (TDropInfo drop)
{
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Number of files dropped.
int totalNumberOfFiles = drop.DragQueryFileCount();
TFileList* files = new TFileList;
for (int i = 0; i < totalNumberOfFiles; i++) {
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Tell DragQueryFile the file interested in (i) and the length of your buffer.
int fileLength = drop.DragQueryFileNameLen(i) + 1;
char *fileName = new char[fileLength];
drop.DragQueryFile(i, fileName, fileLength);
##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
// Getting the file dropped. The location is relative to your client coordinates,
// and will have negative values if dropped in the non client parts of the window.
//
// DragQueryPoint copies that point where the file was dropped and returns whether
// or not the point is in the client area. Regardless of whether or not the file
// is dropped in the client or non-client area of the window, you will still receive
// the file name.
##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
TPoint point;
bool inClientArea = drop.DragQueryPoint(point);
files->Add(new TFileDrop(fileName, point, inClientArea, this));
}
##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Open the files that were dropped.
AddFiles(files);
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Release the memory allocated for this handle with DragFinish.
drop.DragFinish();
}
void [[TApplication]]::AddFiles (TFileList* files)
{
##@QUERY_APPL_COMMENT == VALUE_VERBOSE
// Open all files dragged in.
TFileListIter fileIter(*files);
while (fileIter) {
TDocTemplate* tpl = GetDocManager()->MatchTemplate(fileIter.Current()->WhoAmI());
if (tpl)
tpl->CreateDoc(fileIter.Current()->WhoAmI());
fileIter++;
}
}
##--END-- @OPT_APPL_DRAGDROP
##{main.owl}