'//////////////////////////////////////////////////////////////////////////////////// ' Expert PROJECT ' Expert - (C) Copyright 1993 by Borland International, Inc. All Rights Reserved. ' ' SUBSYSTEM: OWL code template ' FILE: TDialog.OWL ' ' ' OVERVIEW ' ======== ' Definition of all OWL classes when can be generated by the CODEGEN phase of ' AppGen and ClassExpert. AppGen generates when all options have been selected ' and multiple classes are generated. ClassExpert uses the CODEGEN phase when ' a new class is generated. '//////////////////////////////////////////////////////////////////////////////////// <<[H]TDialog [[TDialog]] ##{hheader.snp} #include #pragma hdrstop ##<>[H]TDialog [[TDialog]] ' ' TDialog CPP file. ' <<[CPP]TDialog [[TDialog]] ##{cheader.snp} #include #pragma hdrstop #if !defined(__FLAT__) #include #endif ##<GetModuleFileName(appFName, sizeof(appFName)); OemToAnsi(appFName, appFName); DWORD dwSize = ::GetFileVersionInfoSize(appFName, &fvHandle); if (dwSize) { FVData = (void FAR *)new char[(UINT)dwSize]; if (::GetFileVersionInfo(appFName, fvHandle, dwSize, FVData)) { // Copy string to buffer so if the -dc compiler switch (Put constant strings in code segments) // is on VerQueryValue will work under Win16. This works around a problem in Microsoft's ver.dll // which writes to the string pointed to by subBlockName. strcpy(subBlockName, "\\VarFileInfo\\Translation"); if (!::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&TransBlock, &vSize)) { delete FVData; FVData = 0; } else // Swap the words so wsprintf will print the lang-charset in the correct format. *(DWORD *)TransBlock = MAKELONG(HIWORD(*(DWORD *)TransBlock), LOWORD(*(DWORD *)TransBlock)); } } } ProjectRCVersion::~ProjectRCVersion () { if (FVData) delete FVData; } bool ProjectRCVersion::GetProductName (LPSTR &prodName) { UINT vSize; char subBlockName[255]; if (FVData) { wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductName"); return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodName, &vSize) : false; } else return false; } bool ProjectRCVersion::GetProductVersion (LPSTR &prodVersion) { UINT vSize; char subBlockName[255]; if (FVData) { wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductVersion"); return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodVersion, &vSize) : false; } else return false; } bool ProjectRCVersion::GetCopyright (LPSTR ©right) { UINT vSize; char subBlockName[255]; if (FVData) { wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"LegalCopyright"); return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)©right, &vSize) : false; } else return false; } bool ProjectRCVersion::GetDebug (LPSTR &debug) { UINT vSize; char subBlockName[255]; if (FVData) { wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"SpecialBuild"); return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&debug, &vSize) : false; } else return false; } //{{[[TDialog]] Implementation}} ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE ////////////////////////////////////////////////////////// // [[TDialog]] // ========== // Construction/Destruction handling. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE [[TDialog]]::[[TDialog]] (TWindow *parent, TResId resId, TModule *module) : TDialog(parent, resId, module) { // INSERT>> Your constructor code here. } [[TDialog]]::~[[TDialog]] () { Destroy(); // INSERT>> Your destructor code here. } void [[TDialog]]::SetupWindow () { LPSTR prodName = 0, prodVersion = 0, copyright = 0, debug = 0; ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Get the static text for the value based on VERSIONINFO. TStatic *versionCtrl = new TStatic(this, IDC_VERSION, 255); TStatic *copyrightCtrl = new TStatic(this, IDC_COPYRIGHT, 255); TStatic *debugCtrl = new TStatic(this, IDC_DEBUG, 255); TDialog::SetupWindow(); ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Process the VERSIONINFO. ProjectRCVersion applVersion(GetModule()); ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Get the product name and product version strings. if (applVersion.GetProductName(prodName) && applVersion.GetProductVersion(prodVersion)) { ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2 // IDC_VERSION is the product name and version number, the initial value of IDC_VERSION is // the word Version (in whatever language) product name VERSION product version. char buffer[255]; char versionName[128]; buffer[0] = '\0'; versionName[0] = '\0'; versionCtrl->GetText(versionName, sizeof(versionName)); wsprintf(buffer, "%s %s %s", prodName, versionName, prodVersion); versionCtrl->SetText(buffer); } ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE //Get the legal copyright string. if (applVersion.GetCopyright(copyright)) copyrightCtrl->SetText(copyright); ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE // Only get the SpecialBuild text if the VERSIONINFO resource is there. if (applVersion.GetDebug(debug)) debugCtrl->SetText(debug); } >>[CPP]TDialog [[TDialog]]