home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / EXPERT.PAK / CMDIDOCV.OWL < prev    next >
Text File  |  1995-08-29  |  18KB  |  539 lines

  1. ##{cheader.snp}
  2. #include <owl\owlpch.h>
  3. #pragma hdrstop
  4.  
  5. ##@OPT_APPL_DRAGDROP 2
  6. #include <dir.h>
  7.  
  8. ##QUERY_FILE_H [[FileName]]
  9. #include "[[FileName]]"
  10. ##<<TMDIClient QUERY_FILE_H [[FileName]]
  11. #include "[[FileName]]"
  12. ##<<TMDIChild QUERY_FILE_H [[FileName]]
  13. #include "[[FileName]]"
  14. ##OPT_DV_RESET
  15. ##OPT_DV_NEXT
  16. ##QUERY_DV_TVIEW [[WindowClient]]
  17. ##<<*WindowClient QUERY_FILE_H [[FileName]]
  18. #include "[[FileName]]"
  19. ##<<TDialog QUERY_FILE_H [[Filename]]
  20. #include "[[Filename]]"                        // Definition of about dialog.       
  21.  
  22.  
  23. ##--BEGIN-- @OPT_APPL_HELP
  24. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  25. //
  26. // Generated help file.
  27. //
  28. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  29. ##@QUERY_APPL_HELP [[HelpFile]]
  30. const char HelpFileName[] = "[[HelpFile]].hlp";
  31.  
  32.  
  33. ##--END-- @OPT_APPL_HELP
  34. ##{cdragdrp.owl}
  35. //{{[[TApplication]] Implementation}}
  36.  
  37.  
  38. ##--BEGIN-- @QUERY_APPL_OLE_AUTO 
  39. //
  40. // OLE's ITypeInfo browses this symbol table for a list of all data,
  41. // properties, and methods exposed by this automated class.
  42. //
  43. ##@QUERY_APPL_OLE != VALUE_NOOLE
  44. DEFINE_AUTOAGGREGATE([[TApplication]], OcApp->Aggregate)
  45. ##@QUERY_APPL_OLE == VALUE_NOOLE
  46. DEFINE_AUTOCLASS([[TApplication]])
  47.     EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  48.     EXPOSE_QUIT("Quit", "Quit application", 0)
  49. //{{[[TApplication]]SYM_TBL_BEGIN}}
  50. //{{[[TApplication]]SYM_TBL_END}}
  51. ##@QUERY_APPL_OLE != VALUE_NOOLE
  52. END_AUTOAGGREGATE([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  53. ##@QUERY_APPL_OLE == VALUE_NOOLE
  54. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  55.  
  56.  
  57. ##--END-- @QUERY_APPL_OLE_AUTO 
  58. ##((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO) 2
  59. DEFINE_APP_DICTIONARY(AppDictionary);
  60.  
  61. ##((@QUERY_APPL_OLE == VALUE_NOOLE) && @QUERY_APPL_OLE_AUTO)
  62. static TPointer<TRegistrar> Registrar;
  63. ##((@QUERY_APPL_OLE != VALUE_NOOLE)
  64. static TPointer<TOcRegistrar> Registrar;
  65.  
  66. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_NOOLE) || @QUERY_APPL_OLE_AUTO)
  67. REGISTRATION_FORMAT_BUFFER(100)
  68.  
  69. BEGIN_REGISTRATION(ApplicationReg)
  70. ##@QUERY_OLE_GUID [[GUID]]
  71.     REGDATA(clsid, "{[[GUID]]}")
  72. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  73. ##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH) || @QUERY_APPL_OLE_AUTO) 2
  74.     REGDATA(appname, "[[AppTitle]] Server")
  75.     REGDATA(description, "[[AppTitle]] Server Application")
  76. ##((@QUERY_APPL_OLE == VALUE_CONTAINER) && !@QUERY_APPL_OLE_AUTO) 2
  77.     REGDATA(appname, "[[AppTitle]] Container")
  78.     REGDATA(description, "[[AppTitle]] Container Application")
  79. ##@QUERY_APPL_OLE_AUTO
  80.     REGDATA(progid, "[[AppTitle]].Application.1")
  81. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  82. ##@QUERY_APPL_OLE_AUTO
  83.     REGDATA(cmdline, "/Automation")
  84. ##!@QUERY_APPL_OLE_AUTO
  85.     REGDATA(cmdline, "")
  86. ##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  87.     REGDATA(usage, ocrMultipleUse)
  88. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  89. //    REGDATA(debugger, "TDW")
  90. ##--END-- @QUERY_APPL_OLE_AUTO
  91. END_REGISTRATION
  92.  
  93. ##--END-- @QUERY_APPL_OLE != VALUE_NOOLE
  94. ##@QUERY_APPL_OLE != VALUE_NOOLE
  95. ##: {AddOleDV.SNP}
  96. ##*
  97. ##@QUERY_APPL_OLE == VALUE_NOOLE
  98. ##: {AddDocV.SNP}
  99. ##*
  100.  
  101.  
  102. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  103. //
  104. // Build a response table for all messages/commands handled
  105. // by the application.
  106. //
  107. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  108. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  109. //{{[[TApplication]]RSP_TBL_BEGIN}}
  110.     EV_OWLVIEW(dnCreate, EvNewView),
  111.     EV_OWLVIEW(dnClose,  EvCloseView),
  112. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  113.     EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  114. ##@OPT_APPL_HELP 2
  115. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  116. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  117.     EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  118.     EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  119. ##@OPT_APPL_DRAGDROP
  120. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  121.     EV_WM_DROPFILES,
  122. ##@OPT_APPL_PRINTING
  123. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  124.     EV_WM_WININICHANGE,
  125. //{{[[TApplication]]RSP_TBL_END}}
  126. END_RESPONSE_TABLE;
  127.  
  128.  
  129. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  130. //////////////////////////////////////////////////////////
  131. // [[TApplication]]
  132. // =====
  133. //
  134. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  135. ##((@QUERY_APPL_OLE == VALUE_NOOLE) && (@QUERY_APPL_OLE_AUTO))
  136. [[TApplication]]::[[TApplication]] () : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  137. ##@QUERY_APPL_OLE != VALUE_NOOLE
  138. [[TApplication]]::[[TApplication]] () : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  139. ##((@QUERY_APPL_OLE == VALUE_NOOLE) && (!@QUERY_APPL_OLE_AUTO))
  140. ##QUERY_WIND_TITLE [[Title]]
  141. [[TApplication]]::[[TApplication]] () : TApplication("[[Title]]")
  142. {
  143. ##@OPT_APPL_HELP 4
  144.     HelpState = false;
  145.     ContextHelp = false;
  146.     HelpCursor = 0;
  147.  
  148. ##@OPT_APPL_PRINTING 3
  149.     Printer = 0;
  150.     Printing = 0;
  151.  
  152.     SetDocManager(new TDocManager(dmMDI, this));
  153.  
  154.     // INSERT>> Your constructor code here.
  155. }
  156.  
  157.  
  158. [[TApplication]]::~[[TApplication]] ()
  159. {
  160. ##@OPT_APPL_PRINTING 3
  161.     if (Printer)
  162.         delete Printer;
  163.  
  164.     // INSERT>> Your destructor code here.
  165. }
  166.  
  167.  
  168. ##--BEGIN-- @OPT_APPL_HELP
  169. bool [[TApplication]]::CanClose ()
  170. {
  171.     bool result = TApplication::CanClose();
  172.  
  173. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  174.     //
  175.     // Close the help engine if we used it.
  176.     //
  177. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  178.     if (result && HelpState)
  179.         GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0L);
  180.  
  181.     return result;
  182. }
  183.  
  184.  
  185. ##--END-- @OPT_APPL_HELP
  186. ##--BEGIN-- @OPT_APPL_TOOLBAR
  187. void [[TApplication]]::CreateGadgets (TControlBar *cb, bool server)
  188. {
  189.     if (!server) {
  190.         cb->Insert(*new TButtonGadget(CM_MDIFILENEW, CM_MDIFILENEW));
  191.         cb->Insert(*new TButtonGadget(CM_MDIFILEOPEN, CM_MDIFILEOPEN));
  192.         cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  193.         cb->Insert(*new TSeparatorGadget(6));
  194.     }
  195.  
  196.     cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  197.     cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  198.     cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  199.     cb->Insert(*new TSeparatorGadget(6));
  200.     cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  201.     cb->Insert(*new TSeparatorGadget(6));
  202.     cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  203.     cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  204. ##--BEGIN-- @OPT_APPL_PRINTING
  205.  
  206.     if (!server) {
  207.         cb->Insert(*new TSeparatorGadget(6));
  208.         cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  209.         cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  210.     }
  211. ##--END-- @OPT_APPL_PRINTING
  212. ##@OPT_APPL_HELP 3
  213.  
  214.     cb->Insert(*new TSeparatorGadget(6));
  215.     cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  216.  
  217. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  218.     // Add fly-over help hints.
  219.     cb->SetHintMode(TGadgetWindow::EnterHints);
  220. }
  221.  
  222.  
  223. ##@QUERY_APPL_OLE == VALUE_NOOLE
  224. void [[TApplication]]::SetupSpeedBar (TDecoratedMDIFrame *frame)
  225. ##@QUERY_APPL_OLE != VALUE_NOOLE
  226. void [[TApplication]]::SetupSpeedBar (TOleMDIFrame *frame)
  227. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  228.     //
  229.     // Create default toolbar New and associate toolbar buttons with commands.
  230.     //   
  231. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  232.     TControlBar* cb = new TControlBar(frame);
  233.     CreateGadgets(cb);
  234.  
  235. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  236.     // Setup the toolbar ID used by OLE 2 for toolbar negotiation.
  237.     cb->Attr.Id = IDW_TOOLBAR;
  238.  
  239.     frame->Insert(*cb, TDecoratedFrame::Top);
  240. }
  241.  
  242.  
  243. ##--END-- @OPT_APPL_TOOLBAR
  244. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  245. //////////////////////////////////////////////////////////
  246. // [[TApplication]]
  247. // =====
  248. // Application intialization.
  249. //
  250. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  251. void [[TApplication]]::InitMainWindow ()
  252. {
  253.     if (nCmdShow != SW_HIDE)
  254. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  255.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  256. ##@QUERY_APPL_STARTUP == VALUE_MIN
  257.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  258. ##@QUERY_APPL_STARTUP == VALUE_MAX
  259.         nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  260.  
  261. ##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
  262.     mdiClient = new [[TMDIClient]](this);
  263. ##@OPT_APPL_STATUSBAR 2
  264. ##@QUERY_APPL_OLE != VALUE_NOOLE
  265.     TOleMDIFrame* frame = new TOleMDIFrame(Name, MDI_MENU, *mdiClient, true, this);
  266. ##@QUERY_APPL_OLE == VALUE_NOOLE
  267.     TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, MDI_MENU, *mdiClient, true, this);
  268. ##!@OPT_APPL_STATUSBAR 2
  269. ##@QUERY_APPL_OLE != VALUE_NOOLE
  270.     TOleMDIFrame* frame = new TOleMDIFrame(Name, MDI_MENU, *mdiClient, false, this);
  271. ##@QUERY_APPL_OLE == VALUE_NOOLE
  272.     TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, MDI_MENU, *mdiClient, false, this);
  273.  
  274. ##QUERY_WIND_STYLE [[StyleAttributes]]
  275. ##StyleAttributes != "" 3
  276.     // Override the default window style for the main window.
  277. [[StyleAttributes]]
  278.  
  279. ##QUERY_WIND_BACKGRND [[BackgroundColor]]
  280. ##BackgroundColor != "" 3
  281.     // Change the window's background color
  282.     frame->SetBkgndColor([[BackgroundColor]]);
  283.  
  284. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  285. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  286.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  287. ##@QUERY_APPL_STARTUP == VALUE_MIN
  288.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  289. ##@QUERY_APPL_STARTUP == VALUE_MAX
  290.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  291.  
  292. ##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  293. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  294.     //
  295.     // Assign ICON w/ this application.
  296.     //
  297. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  298.     frame->SetIcon(this, IDI_MDIAPPLICATION);
  299.  
  300. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  301.     //
  302.     // Menu associated with window and accelerator table associated with table.
  303.     //
  304. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  305.     frame->AssignMenu(MDI_MENU);
  306.     
  307. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  308.     //
  309.     // Associate with the accelerator table.
  310.     //
  311. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  312.     frame->Attr.AccelTable = MDI_MENU;
  313.  
  314. ##@OPT_APPL_TOOLBAR
  315.     SetupSpeedBar(frame);
  316. ##@OPT_APPL_STATUSBAR 7
  317.  
  318.     TStatusBar *sb = new TStatusBar(frame, TGadget::Recessed,
  319.                                     TStatusBar::CapsLock        |
  320.                                     TStatusBar::NumLock         |
  321.                                     TStatusBar::ScrollLock      |
  322.                                     TStatusBar::Overtype);
  323.     frame->Insert(*sb, TDecoratedFrame::Bottom);
  324.   
  325.     SetMainWindow(frame);
  326.  
  327.     frame->SetMenuDescr(TMenuDescr(MDI_MENU));
  328.  
  329. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_3D
  330. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  331.     //
  332.     // Windows 3-D controls.
  333.     //
  334. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  335.     EnableCtl3d(true);
  336. ##--END-- @QUERY_APPL_CONTROL==VALUE_3D
  337. ##--BEGIN-- @QUERY_APPL_CONTROL==VALUE_BWCC
  338. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  339.     //
  340.     // Borland Windows custom controls.
  341.     //
  342. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  343.     EnableBWCC();
  344. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  345. }
  346.  
  347.  
  348. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  349. //////////////////////////////////////////////////////////
  350. // [[TApplication]]
  351. // =====
  352. // Response Table handlers:
  353. //
  354. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  355. void [[TApplication]]::EvNewView (TView& view)
  356. {
  357. ##--BEGIN-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  358.     TOleView* ov = TYPESAFE_DOWNCAST(&view, TOleView);
  359.     // If  we're embedded and we're opening out of place then don't create the child window.
  360.     if (view.GetDocument().IsEmbedded() && ov && !ov->IsOpenEditing()) {
  361.         TWindow* vw = view.GetWindow();
  362.         vw->SetParent(TYPESAFE_DOWNCAST(GetMainWindow(), TOleFrame)->GetRemViewBucket());
  363.         vw->Create();
  364.     } else {
  365.         TMDIClient *mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
  366.         if (mdiClient) {
  367. ##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
  368.             [[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, 0);
  369.  
  370. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  371.             // Associate ICON w/ this child window.
  372.             child->SetIcon(this, IDI_DOC);
  373.  
  374. ##@QUERY_APPL_OLE != VALUE_NOOLE 3
  375.             if (view.GetViewMenu())
  376.                 child->SetMenuDescr(*view.GetViewMenu());
  377.  
  378.             child->Create();
  379.             child->SetClientWindow(view.GetWindow());
  380.         }
  381.     }
  382.  
  383.     if (!ov || !ov->GetOcRemView())
  384.         OcApp->SetOption(amEmbedding, false);
  385. ##--END-- ((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  386. ##--BEGIN-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  387.     TMDIClient *mdiClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TMDIClient);
  388.     if (mdiClient) {
  389. ##<<TMDIChild QUERY_CLASS_NAME [[TMDIChild]]
  390.         [[TMDIChild]]* child = new [[TMDIChild]](*mdiClient, 0, view.GetWindow());
  391.  
  392. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  393.         // Associate ICON w/ this child window.
  394.         child->SetIcon(this, IDI_DOC);
  395.  
  396. ##@QUERY_APPL_OLE != VALUE_NOOLE 3
  397.         if (view.GetViewMenu())
  398.             child->SetMenuDescr(*view.GetViewMenu());
  399.  
  400.         child->Create();
  401.     }
  402. ##--END-- ((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  403. }
  404.  
  405.  
  406. void [[TApplication]]::EvCloseView (TView&)
  407. {
  408. }
  409. ##--BEGIN-- @OPT_APPL_HELP
  410.  
  411.  
  412. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  413. //////////////////////////////////////////////////////////
  414. // [[TApplication]]
  415. // =====
  416. // Menu Help Contents command
  417. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  418. void [[TApplication]]::CmHelpContents ()
  419. {
  420. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  421.     //
  422.     // Show the help table of contents.
  423.     //
  424. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  425.     HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0L);
  426. }
  427.  
  428.  
  429. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  430. //////////////////////////////////////////////////////////
  431. // [[TApplication]]
  432. // =====
  433. // Menu Help Using Help command
  434. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  435. void [[TApplication]]::CmHelpUsing ()
  436. {
  437. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  438.     //
  439.     // Display the contents of the Windows help file.
  440.     //
  441. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  442.     HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0L);
  443. }
  444. ##--END-- @OPT_APPL_HELP
  445.  
  446.  
  447. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  448. //////////////////////////////////////////////////////////
  449. // [[TApplication]]
  450. // ===========
  451. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  452. ##@QUERY_TARGET_NAME [[Target]]
  453. // Menu Help About [[Target]] command
  454. void [[TApplication]]::CmHelpAbout ()
  455. {
  456. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  457.     //
  458.     // Show the modal dialog.
  459.     //
  460. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  461. ##--BEGIN-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
  462. ##((@QUERY_APPL_OLE == VALUE_SERVER) || (@QUERY_APPL_OLE == VALUE_OLEBOTH))
  463.     [[TDialog]](&TWindow(::GetFocus(), this)).Execute();
  464. ##((@QUERY_APPL_OLE != VALUE_SERVER) && (@QUERY_APPL_OLE != VALUE_OLEBOTH))
  465.     [[TDialog]](GetMainWindow()).Execute();
  466. ##--END-- <<TDialog QUERY_CLASS_NAME [[TDialog]]
  467. }
  468. ##--BEGIN-- @OPT_APPL_DRAGDROP
  469.  
  470.  
  471. void [[TApplication]]::InitInstance ()
  472. {
  473.     TApplication::InitInstance();
  474.  
  475. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
  476.     // Accept files via drag/drop in the frame window.
  477.     GetMainWindow()->DragAcceptFiles(true);
  478. }
  479.  
  480.  
  481. void [[TApplication]]::EvDropFiles (TDropInfo drop)
  482. {
  483. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  484.     // Number of files dropped.
  485.     int totalNumberOfFiles = drop.DragQueryFileCount();
  486.  
  487.     TFileList* files = new TFileList;
  488.  
  489.     for (int i = 0; i < totalNumberOfFiles; i++) {
  490. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  491.         // Tell DragQueryFile the file interested in (i) and the length of your buffer.
  492.         int     fileLength = drop.DragQueryFileNameLen(i) + 1;
  493.         char    *fileName = new char[fileLength];
  494.  
  495.         drop.DragQueryFile(i, fileName, fileLength);
  496.  
  497. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  498.         // Getting the file dropped. The location is relative to your client coordinates,
  499.         // and will have negative values if dropped in the non client parts of the window.
  500.         //
  501.         // DragQueryPoint copies that point where the file was dropped and returns whether
  502.         // or not the point is in the client area.  Regardless of whether or not the file
  503.         // is dropped in the client or non-client area of the window, you will still receive
  504.         // the file name.
  505. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  506.         TPoint  point;
  507.         bool    inClientArea = drop.DragQueryPoint(point);
  508.         files->Add(new TFileDrop(fileName, point, inClientArea, this));
  509.     }
  510.  
  511. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE
  512.     // Open the files that were dropped.
  513.     AddFiles(files);
  514.  
  515. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  516.     // Release the memory allocated for this handle with DragFinish.
  517.     drop.DragFinish();
  518. }
  519.  
  520.  
  521. void [[TApplication]]::AddFiles (TFileList* files)
  522. {
  523. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE
  524.     // Open all files dragged in.
  525.     TFileListIter fileIter(*files);
  526.  
  527.     while (fileIter) {
  528.         TDocTemplate* tpl = GetDocManager()->MatchTemplate(fileIter.Current()->WhoAmI());
  529.         if (tpl)
  530.             tpl->CreateDoc(fileIter.Current()->WhoAmI());
  531.         fileIter++;
  532.     }
  533. }
  534. ##--END-- @OPT_APPL_DRAGDROP
  535.  
  536.  
  537. ##{main.owl}
  538.