www.pudn.com > FlashTool_src_v2.9.1006.zip > about.cpp


/***************************************************************************** 
*  Copyright Statement: 
*  -------------------- 
*  This software is protected by Copyright and the information contained 
*  herein is confidential. The software may not be copied and the information 
*  contained herein may not be used or disclosed except with the written 
*  permission of MediaTek Inc. (C) 2002 
* 
*****************************************************************************/ 
 
/******************************************************************************* 
* Filename: 
* --------- 
*  about.cpp 
* 
* Project: 
* -------- 
*  Flash tool set 
* 
* Description: 
* ------------ 
*  about window, display version, build date support feature. 
* 
* Author: 
* ------- 
*  FZ Hsu (mtk00303) 
* 
*============================================================================== 
*           HISTORY 
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
*------------------------------------------------------------------------------ 
* $Revision:   1.2  $ 
* $Modtime:   Oct 19 2005 11:11:50  $ 
* $Log:   //mtkvs01/vmdata/flash_tool/archives/about.cpp-arc  $ 
 *  
 *    Rev 1.2   Oct 19 2005 14:47:14   mtk00539 
 *  1. [FlashTool][New] Adapt new BROM_DLL&DA v2.7.1008.  
 * Resolution for 141: [FlashTool v2.7.1008][New] Support NFB download and many new features. 
 *  
 *    Rev 1.1   Jun 30 2003 19:19:34   mtk00539 
 *  1. [FlashTool][Add Features] Split flashtool function into brom.dll 
 *  2. [FlashTool][Add Features] Format function: users can format any range you want without downloading procedure. 
 *  3. [FlashTool][Add Features] Report format percentage. 
 *  4. [FlashTool][Add Features] Check format range. 
 *  5. [FlashTool][Add Features] Merge FlashTool for Pluto version. 
 *  6. [FlashTool][Add Features] Runtime debug log: you can press (CTRL+ALT+T) to enable/disable debug log whenever you want. 
 *  7. [FlashTool][Add Features] Forcedly Stop hot-key: you can forcedly stop FlashTool by pressing CTRL+Z. 
 *  8. [FlashTool][BUG FIXED] Fix FlashTool MEM_CMD end_addr bug, FlashTool should use (begin_addr+length-1) as end_addr. 
 * Resolution for 11: [FlashTool v2.3.1001][New Version] Split flashtool function into brom.dll 
 *  
 *    Rev 1.0   Jul 20 2002 19:26:08   admin 
 * Initial revision. 
* 
*------------------------------------------------------------------------------ 
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
*============================================================================== 
*******************************************************************************/ 
 
//--------------------------------------------------------------------------- 
 
#include  
#pragma hdrstop 
 
#include "about.h" 
#include "flashtool.h" 
#include "meta.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm_About *Form_About; 
//--------------------------------------------------------------------------- 
__fastcall TForm_About::TForm_About(TComponent* Owner) 
        : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm_About::Button1Click(TObject *Sender) 
{ 
    Visible = false;         
} 
//--------------------------------------------------------------------------- 
int TForm_About::GetVersion( unsigned int *major_ver, unsigned int *minor_ver, unsigned int *build_num ) { 
 
	static unsigned int s_major_ver=0; 
	static unsigned int s_minor_ver=0; 
	static unsigned int s_build_num=0; 
 
    if( NULL == major_ver || NULL == minor_ver || NULL == build_num ) { 
    	return 1; 
	} 
 
    *major_ver = 0; 
    *minor_ver = 0; 
    *build_num = 0; 
 
	if( 0==s_major_ver && 0==s_minor_ver && 0==s_build_num ) { 
 
		// get file version indo 
		DWORD dwHnd; 
	 	DWORD dwVerInfoSize; 
	 	char *pBuffer; 
		if( 0 >= (dwVerInfoSize=GetFileVersionInfoSize("flash_tool.exe", &dwHnd)) ) { 
			// get fileversion size error 
			return 2; 
		} 
		if( NULL == (pBuffer=(char *)malloc(dwVerInfoSize)) ) { 
			// not enough memory 
			return 3; 
		} 
 
		// get file version info 
		if(!GetFileVersionInfo("flash_tool.exe", dwHnd, dwVerInfoSize, pBuffer)) { 
			// get file version info fail 
			return 4; 
		} 
 
		// get FileVersion string from resource 
		VS_FIXEDFILEINFO *p_version; 
		unsigned int version_len=0; 
		if(!VerQueryValue(pBuffer, "\\", (void **)&p_version, &version_len)) { 
			// get query value fail 
			return 5; 
		} 
 
        /*                                            */ 
        /* Look at FILEVERSION in rc file.            */ 
        /*                                            */ 
        /* FILEVERSION    1,    2,    3,    4         */ 
        /*             0001  0002  0003  0004         */ 
        /*             -----+----  -----+----         */ 
        /*                  |         dwFileVersionLS */ 
        /*                  |                         */ 
        /*           dwFileVersionMS                  */ 
        /*                                            */ 
		s_major_ver = (p_version->dwFileVersionMS>>16) & 0x0000FFFF; 
		s_minor_ver = p_version->dwFileVersionMS & 0x0000FFFF; 
		s_build_num = p_version->dwFileVersionLS & 0x0000FFFF; 
	} 
 
	// return version number 
	*major_ver = s_major_ver; 
	*minor_ver = s_minor_ver; 
	*build_num = s_build_num; 
 
	return 0; 
} 
 
void __fastcall TForm_About::FormCreate(TObject *Sender) 
{ 
   AnsiString as; 
   lb_BuildDate->Caption = "Build date: " + AnsiString( __DATE__ ); 
 
   unsigned int major_ver; 
   unsigned int minor_ver; 
   unsigned int build_num; 
 
   GetVersion(&major_ver, &minor_ver, &build_num); 
 
   VersionInfo->Caption = "FlashTool v" + IntToStr(major_ver) + "." + IntToStr(minor_ver) + "." + IntToStr(build_num); 
 
   #ifdef _DEBUG 
     as = VersionInfo->Caption; 
     as = as+" (DEBUG version) "; 
     VersionInfo->Caption = as; 
   #endif /* #ifdef _DEBUG */ 
 
   unsigned int brom_major_ver; 
   unsigned int brom_minor_ver; 
   unsigned int brom_build_num; 
 
   GetBromDLLVersion(&brom_major_ver, &brom_minor_ver, &brom_build_num); 
   as.printf("brom.dll v%d.%d.%04d", brom_major_ver, brom_minor_ver, brom_build_num); 
   brom_dll_version->Caption = as; 
 
   unsigned int metadll_major_ver; 
   unsigned int metadll_minor_ver; 
   unsigned int metadll_build_num; 
 
   META_GetVersion(&metadll_build_num); 
   metadll_major_ver = (0xFF000000&metadll_build_num)>>24; 
   metadll_minor_ver = (0x00FF0000&metadll_build_num)>>16; 
   metadll_build_num = (0x0000FFFF&metadll_build_num); 
   as.printf("META_DLL.dll v%d.%d.%04d", metadll_major_ver, metadll_minor_ver, metadll_build_num); 
   meta_dll_version->Caption = as; 
} 
//---------------------------------------------------------------------------