home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / windows / c / wvplr1 / aboutdlg.cpp next >
Encoding:
C/C++ Source or Header  |  1994-06-25  |  4.1 KB  |  166 lines

  1. /*  Project wpdemo
  2.     Lighthouse Engineering
  3.     Copyright   1994 by Lighthouse Engineering.  All Rights Reserved.
  4.  
  5.     SUBSYSTEM:    wpdemo.exe Application
  6.     FILE:         aboutdlg.cpp
  7.     AUTHOR:       K. Scott Piel
  8.  
  9.  
  10.     OVERVIEW
  11.     ========
  12.     Source file for implementation of AboutDlg (TDialog).      
  13. */
  14.  
  15.  
  16. #include <owl\owlpch.h>
  17. #pragma hdrstop
  18.  
  19. #include <owl\static.h>
  20.  
  21. #include <ver.h>
  22.  
  23. #include "wpdemo.h"
  24. #include "aboutdlg.h"
  25.  
  26.  
  27. class ProjectRCVersion {
  28. public:
  29.     ProjectRCVersion (TModule *module);
  30.     virtual ~ProjectRCVersion ();
  31.  
  32.     BOOL GetProductName (LPSTR &prodName);
  33.     BOOL GetProductVersion (LPSTR &prodVersion);
  34.     BOOL GetCopyright (LPSTR ©right);
  35.     BOOL GetDebug (LPSTR &debug);
  36.  
  37. protected:
  38.     LPBYTE      TransBlock;
  39.     void FAR    *FVData;
  40.  
  41. private:
  42.     ProjectRCVersion (const ProjectRCVersion &);
  43.     ProjectRCVersion & operator =(const ProjectRCVersion &);
  44. };
  45.  
  46.  
  47. ProjectRCVersion::ProjectRCVersion (TModule *module)
  48. {
  49.     char    appFName[255];
  50.     DWORD   fvHandle;
  51.     UINT    vSize;
  52.  
  53.     FVData = 0;
  54.  
  55.     module->GetModuleFileName(appFName, sizeof(appFName));
  56.     DWORD dwSize = GetFileVersionInfoSize(appFName, &fvHandle);
  57.     if (dwSize) {
  58.         FVData  = (void FAR *)new char[(UINT)dwSize];
  59.         if (GetFileVersionInfo(appFName, fvHandle, dwSize, FVData))
  60.             if (!VerQueryValue(FVData, "\\VarFileInfo\\Translation", (void FAR* FAR*)&TransBlock, &vSize)) {
  61.                 delete FVData;
  62.                 FVData = 0;
  63.             }
  64.     }
  65. }
  66.  
  67.  
  68. ProjectRCVersion::~ProjectRCVersion ()
  69. {
  70.     if (FVData)
  71.         delete FVData;
  72. }
  73.  
  74.  
  75. BOOL ProjectRCVersion::GetProductName (LPSTR &prodName)
  76. {
  77.     UINT    vSize;
  78.     char    subBlockName[255];
  79.  
  80.     wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductName");
  81.     return FVData ? VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodName, &vSize) : FALSE;
  82. }
  83.  
  84.  
  85. BOOL ProjectRCVersion::GetProductVersion (LPSTR &prodVersion)
  86. {
  87.     UINT    vSize;
  88.     char    subBlockName[255];
  89.  
  90.     wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductVersion");
  91.     return FVData ? VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodVersion, &vSize) : FALSE;
  92. }
  93.  
  94.  
  95. BOOL ProjectRCVersion::GetCopyright (LPSTR ©right)
  96. {
  97.     UINT    vSize;
  98.     char    subBlockName[255];
  99.  
  100.     wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"LegalCopyright");
  101.     return FVData ? VerQueryValue(FVData, subBlockName, (void FAR* FAR*)©right, &vSize) : FALSE;
  102. }
  103.  
  104.  
  105. BOOL ProjectRCVersion::GetDebug (LPSTR &debug)
  106. {
  107.     UINT    vSize;
  108.     char    subBlockName[255];
  109.  
  110.     wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"SpecialBuild");
  111.     return FVData ? VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&debug, &vSize) : FALSE;
  112. }
  113.  
  114.  
  115. //{{AboutDlg Implementation}}
  116.  
  117.  
  118. AboutDlg::AboutDlg (TWindow *parent, TResId resId, TModule *module)
  119.     : TDialog(parent, resId, module)
  120. {
  121.     // INSERT>> Your constructor code here.
  122. }
  123.  
  124.  
  125. AboutDlg::~AboutDlg ()
  126. {
  127.     Destroy();
  128.  
  129.     // INSERT>> Your destructor code here.
  130. }
  131.  
  132.  
  133. void AboutDlg::SetupWindow ()
  134. {
  135.     LPSTR prodName, prodVersion, copyright, debug;
  136.  
  137.     TStatic *versionCtrl = new TStatic(this, IDC_VERSION, 255);
  138.     TStatic *copyrightCtrl = new TStatic(this, IDC_COPYRIGHT, 255);
  139.     TStatic *debugCtrl = new TStatic(this, IDC_DEBUG, 255);
  140.  
  141.     TDialog::SetupWindow();
  142.  
  143.     ProjectRCVersion applVersion(GetModule());
  144.  
  145.     applVersion.GetProductName(prodName);
  146.     applVersion.GetProductVersion(prodVersion);
  147.     applVersion.GetCopyright(copyright);
  148.  
  149.     char    buffer[255];
  150.     char    versionName[128];
  151.     versionCtrl->GetText(versionName, sizeof(versionName));
  152.     wsprintf(buffer, "%s %s %s", prodName, versionName, prodVersion);
  153.     versionCtrl->SetText(buffer);
  154.  
  155.     copyrightCtrl->SetText(copyright);
  156.  
  157.     if (applVersion.GetDebug(debug))
  158.         debugCtrl->SetText(debug);
  159.  
  160.     WavePlayer        Player( _hInstance, GetApplication() );
  161.  
  162.     Player.Execute( IDW_REGISTER );
  163. }
  164.  
  165.  
  166.