main.cxx
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:6k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * main.cxx
  3.  *
  4.  * PWLib application source file for $$PRODUCT_NAME$$
  5.  *
  6.  * Main program entry point.
  7.  *
  8.  * Copyright $$YEAR$$ $$MANUFACTURER$$
  9.  *
  10.  * $Log$
  11.  */
  12. #include <$$HEADER_FILE$$>
  13. #include "main.h"
  14. $$IF(IS_GUI)
  15. #include "resources.h"
  16. $$ENDIF
  17. $$IF(HAS_HTTP)
  18. #include "custom.h"
  19. $$ENDIF
  20. PCREATE_PROCESS($$APP_CLASS_NAME$$);
  21. $$IF(HAS_HTTP)
  22. const WORD DefaultHTTPPort = 6666;
  23. $$ENDIF
  24. $$APP_CLASS_NAME$$::$$APP_CLASS_NAME$$()
  25. $$IF(HAS_HTTP)
  26.   : $$PARENT_APP_CLASS$$(ProductInfo)
  27. $$ELSE
  28.   : $$PARENT_APP_CLASS$$("$$MANUFACTURER$$", "$$PRODUCT_NAME$$", 1, 0, AlphaCode, 1)
  29. $$ENDIF
  30. {
  31. }
  32. $$IF(IS_SERVICE)
  33. #ifdef _WIN32
  34. const char * $$APP_CLASS_NAME$$::GetServiceDependencies() const
  35. {
  36.   return "EventLogTcpip";
  37. }
  38. #endif
  39. BOOL $$APP_CLASS_NAME$$::OnStart()
  40. {
  41.   GetFile().GetDirectory().Change();
  42. $$IF(HAS_HTTP)
  43.   httpNameSpace.AddResource(new PHTTPDirectory("data", "data"));
  44.   httpNameSpace.AddResource(new PServiceHTTPDirectory("html", "html"));
  45. $$ENDIF
  46.   return Initialise("Started");
  47. }
  48. void $$APP_CLASS_NAME$$::OnStop()
  49. {
  50.   PSYSTEMLOG(Warning, GetName() << " stopped.");
  51.   PServiceProcess::OnStop();
  52. }
  53. BOOL $$APP_CLASS_NAME$$::OnPause()
  54. {
  55. $$IF(HAS_HTTP)
  56.   OnConfigChanged();
  57. $$ENDIF
  58.   return TRUE;
  59. }
  60. void $$APP_CLASS_NAME$$::OnContinue()
  61. {
  62.   if (Initialise("Restarted"))
  63.     return;
  64.   OnStop();
  65.   Terminate();
  66. }
  67. void $$APP_CLASS_NAME$$::OnControl()
  68. {
  69.   // This function get called when the Control menu item is selected in the
  70.   // tray icon mode of the service.
  71. $$IF(HAS_HTTP)
  72.   PStringStream url;
  73.   url << "http://";
  74.   PString host = PIPSocket::GetHostName();
  75.   PIPSocket::Address addr;
  76.   if (PIPSocket::GetHostAddress(host, addr))
  77.     url << host;
  78.   else
  79.     url << "localhost";
  80.   url << ':' << httpListeningSocket->GetPort();
  81.   PURL::OpenBrowser(url);
  82. $$ENDIF
  83. }
  84. $$IF(HAS_HTTP)
  85. void $$APP_CLASS_NAME$$::OnConfigChanged()
  86. {
  87. }
  88. PString $$APP_CLASS_NAME$$::GetPageGraphic()
  89. {
  90.   PFile header;
  91.   if (header.Open("header.html", PFile::ReadOnly))
  92.     return header.ReadString(header.GetLength());
  93.   return PHTTPServiceProcess::GetPageGraphic();
  94. }
  95. void $$APP_CLASS_NAME$$::AddUnregisteredText(PHTML &)
  96. {
  97. }
  98. $$ENDIF
  99. BOOL $$APP_CLASS_NAME$$::Initialise(const char * initMsg)
  100. {
  101. $$IF(HAS_HTTP)
  102.   //  create the home page
  103.   static const char welcomeHtml[] = "welcome.html";
  104.   if (PFile::Exists(welcomeHtml))
  105.     httpNameSpace.AddResource(new PServiceHTTPFile(welcomeHtml, TRUE), PHTTPSpace::Overwrite);
  106.   else {
  107.     PHTML html;
  108.     html << PHTML::Title("Welcome to "+GetName())
  109.          << PHTML::Body()
  110.          << "<CENTER>rn"
  111.          << PHTML::Heading(1) << "Welcome to "
  112.          << gifHTML
  113.          << PHTML::Heading(1)
  114.          << PProcess::GetOSClass() << ' ' << PProcess::GetOSName()
  115.          << " Version " << GetVersion(TRUE) << PHTML::BreakLine()
  116.          << ' ' << compilationDate.AsString("d MMMM yy")
  117.          << PHTML::BreakLine()
  118.          << "by"
  119.          << PHTML::BreakLine()
  120.          << PHTML::Heading(3)
  121.          << PHTML::HotLink(GetHomePage()) << GetManufacturer() << PHTML::HotLink()
  122.          << PHTML::Heading(3)
  123.          << PHTML::HotLink(PString("mailto:")+GetEMailAddress()) << GetEMailAddress() << PHTML::HotLink()
  124.          << PHTML::Paragraph()
  125.          << PHTML::HRule()
  126.          << PHTML::Paragraph()
  127.          << PHTML::HotLink("http://www.equival.com.au/$$PRODUCT_NAME$$/relnotes/" + GetVersion(TRUE) + ".html")
  128.          << "Release notes" << PHTML::HotLink()
  129.          << " on this version of " << GetProductName() << " are available."
  130.          << PHTML::Paragraph()
  131.          << PHTML::HRule()
  132.          << GetCopyrightText()
  133.          << PHTML::Body();
  134.     httpNameSpace.AddResource(new PServiceHTTPString("welcome.html", html), PHTTPSpace::Overwrite);
  135.   }
  136.   // set up the HTTP port for listening & start the first HTTP thread
  137.   if (ListenForHTTP(DefaultHTTPPort))
  138.     PSYSTEMLOG(Info, "Opened master socket for HTTP: " << httpListeningSocket->GetPort());
  139.   else {
  140.     PSYSTEMLOG(Fatal, "Cannot run without HTTP port: " << httpListeningSocket->GetErrorText());
  141.     return FALSE;
  142.   }
  143. $$ENDIF
  144.   PSYSTEMLOG(Info, "Service " << GetName() << ' ' << initMsg);
  145.   return TRUE;
  146. }
  147. $$ENDIF
  148. void $$APP_CLASS_NAME$$::Main()
  149. {
  150. $$IF(HAS_HTTP)
  151.   Suspend();
  152. $$ENDIF
  153. $$IF(IS_GUI)
  154.   SetAboutDialogID(IDD_ABOUT);
  155.   PNEW MainWindow(GetArguments());
  156.   PApplication::Main();
  157. $$ENDIF
  158. }
  159. $$IF(IS_GUI)
  160. MainWindow::MainWindow(PArgList & /*args*/)
  161. {
  162.   SetTitle(PResourceString(IDS_TITLE));
  163.   SetIcon(PIcon(IDI_MAIN_WINDOW));
  164.   SetMenu(new MainMenu(this));
  165.   UpdateCommandSources();
  166.   ShowAll();
  167. }
  168. void MainWindow::NewCmd(PMenuItem &, INT)
  169. {
  170.   // New document
  171. }
  172. void MainWindow::OpenCmd(PMenuItem &, INT)
  173. {
  174.   POpenFileDialog dlg(this);
  175.   if (dlg.RunModal()) {
  176.     // Open existing document
  177.   }
  178. }
  179. void MainWindow::CloseCmd(PMenuItem &, INT)
  180. {
  181.   // Close document
  182. }
  183. void MainWindow::SaveCmd(PMenuItem &, INT)
  184. {
  185.   // Save current document
  186. }
  187. void MainWindow::SaveAsCmd(PMenuItem &, INT)
  188. {
  189.   PSaveFileDialog dlg(this);
  190.   if (dlg.RunModal()) {
  191.     // Save document to new name
  192.   }
  193. }
  194. void MainWindow::PrintCmd(PMenuItem &, INT)
  195. {
  196.   PPrintJobDialog dlg(this, printInfo);
  197.   if (dlg.RunModal()) {
  198.     printInfo = dlg.GetPrintInfo();
  199.     PPrintCanvas canvas("$$PRODUCT_NAME$$", printInfo);
  200.     // Add printing code here
  201.   }
  202. }
  203. void MainWindow::PrinterSetupCmd(PMenuItem &, INT)
  204. {
  205.   PPrinterSetupDialog dlg(this, printInfo);
  206.   if (dlg.RunModal())
  207.     printInfo = dlg.GetPrintInfo();
  208. }
  209. void MainWindow::ExitCmd(PMenuItem &, INT)
  210.   // The Exit menu ... well ... exits.
  211. {
  212.   owner->Terminate();
  213. }
  214. void MainWindow::CopyCmd()
  215. {
  216.   PClipboard clip(this);
  217.   // Do something with the clipboard
  218. }
  219. BOOL MainWindow::CanCopy()
  220. {
  221.   // If want copy menu enabled
  222.   return TRUE;
  223. }
  224. void MainWindow::PasteCmd()
  225. {
  226.   PClipboard clip(this);
  227.   // Do something with the clipboard
  228. }
  229. BOOL MainWindow::CanPaste()
  230. {
  231.   // If want paste menu enabled, ie clipboard has right format
  232.   return TRUE;
  233. }
  234. $$ENDIF
  235. // End of File ///////////////////////////////////////////////////////////////