STATUS.CPP
上传用户:zhang8947
上传日期:2007-01-08
资源大小:1910k
文件大小:15k
- //状态
- #include "stdafx.h"
- #include <ver.h>
- #include "resource.h"
- #include "cspublic.h"
- #include "systemse.h"
- #include "status.h"
- #include "hooks.h"
- extern CHotKeyParam OHotKeyParam ; //热键参数对象
- CWinStatus OWinStatus ; //主窗口状态对象
- CWinStatus::CWinStatus( void )
- {
- m_hMainWnd =NULL ;
- //得到主窗口状态
- m_nMainWinStatus =GetPrivateProfileInt( "窗口参数" ,
- "浮动条状态" , 2 , INI_FILE_NAME ) ;
- m_bLine =GetPrivateProfileInt( "窗口参数" ,
- "退化显示" , 1 , INI_FILE_NAME ) ;
- m_bLineSwitch =1 ;
- //-----------------------------------------------------------------------------------//
- m_hInputWnd =NULL ;
- //得到输入板窗口状态
- m_nInputWinStatus =GetPrivateProfileInt( "输入板参数" ,
- "输入板状态" , 1 , INI_FILE_NAME ) ;
- //-----------------------------------------------------------------------------------------------//
- //得到输入内码
- m_nInputCode =GetPrivateProfileInt( "输入方法" ,
- "输入内码" , 0 , INI_FILE_NAME ) ;
- //得到当前输入法
- m_nInputMethod =GetPrivateProfileInt( "输入方法" , "当前输入法" , 0 ,
- INI_FILE_NAME ) ;
- //----------------------------------------------------------------------------------------------//
- //得到是西文字符还是中文字符,缺省为西文字符
- m_bInputStatus123[0] =GetPrivateProfileInt( "输入方法" ,
- "西文字符还是中文字符" , 1 , INI_FILE_NAME ) ;
- //得到输入汉字后是否自动加空格,缺省为不加
- m_bInputStatus123[1] =GetPrivateProfileInt( "输入方法" ,
- "汉字后是否加空格" , 1 , INI_FILE_NAME ) ;
- //得到是半角字母还是全角字母,缺省为半角字母
- m_bInputStatus123[2] =GetPrivateProfileInt( "输入方法" ,
- "半角字母还是全角字母" , 1 , INI_FILE_NAME ) ;
- //-------------------------------------------------------------------------------------------//
- //得到是否自动识别GB、BIG5
- m_bRecGbBig5 =GetPrivateProfileInt( "输出" , "是否自动识别GB码与BIG5码" ,
- 1 , INI_FILE_NAME ) ;
- //得到是否自动识别HZ码
- m_bRecHz =GetPrivateProfileInt( "输出" , "是否自动识别HZ码" ,
- 1 , INI_FILE_NAME ) ;
- //得到输出汉字是简体还是繁体
- m_bIsJt =GetPrivateProfileInt( "输出" ,
- "简体汉字还是繁体汉字" , 1 , INI_FILE_NAME ) ;
- //得到缺省输出内码
- m_nOutputCode =GetPrivateProfileInt( "输出" ,
- "缺省输出内码" , 0 , INI_FILE_NAME ) ;
- //得到是否以系统的内码为优先
- m_bSystemFirst =GetPrivateProfileInt( "输出" ,
- "是否以系统内码为先" , 1 , INI_FILE_NAME ) ;
- //得到当前系统的内码
- m_nSystemCode =GetPrivateProfileInt( "输出" ,
- "当前系统的内码" , 1 , INI_FILE_NAME ) ;
- //---------------------------------------------------------------------------------------------------------------//
- m_bWinOrBar =GetPrivateProfileInt( "指取翻译" , "详细解释还是简单解释" ,
- 1 , INI_FILE_NAME ) ;
- //得到是否进行指取翻译
- m_nFingerTranslate =GetPrivateProfileInt( "指取翻译" , "是否进行指取翻译" ,
- 1 , INI_FILE_NAME ) ;
- if( m_nFingerTranslate )
- m_nFingerTranslate =1 ;
- m_nFingerAid =GetPrivateProfileInt( "指取翻译" ,
- "是否需要辅助键" , 0 , INI_FILE_NAME ) ;
- if( m_nFingerAid )
- m_nFingerAid =1 ;
- //---------------------------------------------------------------------------------------------//
- m_bPrompt =GetPrivateProfileInt( "系统参数" ,
- "系统退出时是否提示" , 1 , INI_FILE_NAME ) ;
- m_bExitWin =GetPrivateProfileInt( "系统参数" ,
- "是否同时退出Windows" , 0 , INI_FILE_NAME ) ;
- //-------------------------------------------------------------------------------------------//
- m_bMenuCharFlag =0 ;
- //-------------------------------------------------------------------------------------------//
- //判断Windows版本
- //低字0为Win,1为95;高字0为西文,1为外挂,2为中文Win
- WORD wLow , wHigh ;
- if( HIBYTE(LOWORD( GetVersion() ))==95 )
- wLow =1 ;
- else
- wLow =0 ;
- wHigh =0 ; //缺省为西文
-
- char sProgramName[100] ;
- //得到Windows 所在路径
- if( !::GetWindowsDirectory( sProgramName , sizeof( sProgramName ) ) )
- {
- m_dwWinVersion =MAKELONG( wLow , wHigh ) ;
- return ;
- }
- strcat( sProgramName , "\winver.exe" ) ;
- BYTE abData[512];
- DWORD handle;
- DWORD dwSize;
- LANGUAGE_PAGE *lpLang ;
- dwSize =::GetFileVersionInfoSize(sProgramName, &handle);
- ::GetFileVersionInfo(sProgramName, handle, dwSize, abData);
- ::VerQueryValue(abData, "\VarFileInfo\Translation",
- (void FAR* FAR*)&lpLang, (UINT FAR*)&dwSize);
- if(!dwSize)
- {
- m_dwWinVersion =MAKELONG( wLow , wHigh ) ;
- return ;
- }
- if( lpLang->wLanguage==0x0404 || //繁体字汉语
- lpLang->wLanguage==0x0411 || //日语
- lpLang->wLanguage==0x0412 || //朝鲜语
- lpLang->wLanguage==0x0804 ) //简体字汉语
- wHigh =2 ;
- m_dwWinVersion =MAKELONG( wLow , wHigh ) ;
- }
- CWinStatus::~CWinStatus( void )
- {
- char sBuff[10] ;
-
- wsprintf( sBuff , "%d" , m_nMainWinStatus ) ;
- WritePrivateProfileString( "窗口参数" , "浮动条状态" , sBuff ,
- INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_bLine ) ;
- WritePrivateProfileString( "窗口参数" ,
- "退化显示" , sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nInputWinStatus ) ;
- WritePrivateProfileString( "输入板参数" , "输入板状态" , sBuff ,
- INI_FILE_NAME ) ;
- //--------------------------------------------------------------------------------//
- wsprintf( sBuff , "%d" , m_nInputCode ) ;
- WritePrivateProfileString( "输入方法" , "输入内码" , sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nInputMethod ) ;
- WritePrivateProfileString( "输入方法" , "当前输入法" , sBuff , INI_FILE_NAME ) ;
- //---------------------------------------------------------------------------------//
- wsprintf( sBuff , "%d" , OWinStatus.m_bInputStatus123[0] ) ;
- WritePrivateProfileString( "输入方法" ,
- "西文字符还是中文字符" , sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , OWinStatus.m_bInputStatus123[1] ) ;
- WritePrivateProfileString( "输入方法" ,
- "汉字后是否加空格" , sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , OWinStatus.m_bInputStatus123[2] ) ;
- WritePrivateProfileString( "输入方法" ,
- "半角字母还是全角字母" , sBuff , INI_FILE_NAME ) ;
- //----------------------------------------------------------------------------------//
- //存储参数到INI文件中
- wsprintf( sBuff , "%d" , m_bRecGbBig5 ) ;
- WritePrivateProfileString( "输出" , "是否自动识别GB码与BIG5码" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_bRecHz ) ;
- WritePrivateProfileString( "输出" , "是否自动识别HZ码" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_bIsJt ) ;
- WritePrivateProfileString( "输出" , "简体汉字还是繁体汉字" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nOutputCode ) ;
- WritePrivateProfileString( "输出" , "缺省输出内码" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_bSystemFirst ) ;
- WritePrivateProfileString( "输出" , "是否以系统内码为先" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nSystemCode ) ;
- WritePrivateProfileString( "输出" , "当前系统的内码" ,
- sBuff , INI_FILE_NAME ) ;
- //-----------------------------------------------------------------------------------------//
- wsprintf( sBuff , "%d" , m_bWinOrBar ) ;
- WritePrivateProfileString( "指取翻译" , "详细解释还是简单解释" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nFingerTranslate ) ;
- WritePrivateProfileString( "指取翻译" , "是否进行指取翻译" ,
- sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_nFingerAid ) ;
- WritePrivateProfileString( "指取翻译" ,
- "是否需要辅助键" , sBuff , INI_FILE_NAME ) ;
- //---------------------------------------------------------------------------------------------//
- wsprintf( sBuff , "%d" , m_bPrompt ) ;
- WritePrivateProfileString( "系统参数" ,
- "系统退出时是否提示" , sBuff , INI_FILE_NAME ) ;
- wsprintf( sBuff , "%d" , m_bExitWin ) ;
- WritePrivateProfileString( "系统参数" ,
- "是否同时退出Windows" , sBuff , INI_FILE_NAME ) ;
- }
- //-------------------------------------------------------------------//
- #ifdef __cplusplus
- extern "C" {
- #endif
- //主窗口状态对象的接口函数
- //设置主窗口句柄
- void __export FAR PASCAL SetMainWinHandle( HWND hwnd )
- {
- OWinStatus.m_hMainWnd =hwnd ;
- }
- //得到主窗口句柄
- HWND __export FAR PASCAL GetMainWinHandle( void )
- {
- return OWinStatus.m_hMainWnd ;
- }
-
- //设置主窗口状态
- void __export FAR PASCAL SetMainWinStatus( int nStatus )
- {
- OWinStatus.m_nMainWinStatus =nStatus ;
- }
- //得到主窗口状态
- int __export FAR PASCAL GetMainWinStatus( void )
- {
- return OWinStatus.m_nMainWinStatus ;
- }
- //显示或隐藏主窗口
- void __export FAR PASCAL SwitchMainWin( void )
- {
- if( !OWinStatus.m_hMainWnd ) //主窗口句柄为空
- return ;
-
- if( !OWinStatus.m_nMainWinStatus ) //当前为隐藏,显示之
- {
- SetMainWinStatus( 2 ) ; //状态设为正常显示
- ::SetWindowPos( OWinStatus.m_hMainWnd , HWND_TOPMOST ,
- 0 , 0 , 0 , 0 , SWP_SHOWWINDOW|
- SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE ) ;
- if( GetLineFlag() ) //允许退化显示
- //设上退化时间器
- ::SendMessage( GetMainWinHandle() , WM_USER_SET_TIMER ,
- 1 , 0 ) ;
- }
- else //当前为显示,隐藏之
- {
- if( GetLineFlag() ) //允许退化显示
- ::SendMessage( GetMainWinHandle() , WM_USER_SET_TIMER ,
- 0 , 0 ) ;
-
- SetMainWinStatus( 0 ) ;
- ::ShowWindow( OWinStatus.m_hMainWnd , SW_HIDE ) ;
- }
- }
- //设置退化显示状态
- void __export FAR PASCAL SetLineFlag( BOOL b )
- {
- OWinStatus.m_bLine =b ;
- }
- //得到退化显示状态
- BOOL __export FAR PASCAL GetLineFlag( void )
- {
- return OWinStatus.m_bLine ;
- }
- //设置退化显示开关
- void __export FAR PASCAL SetLineSwitch( BOOL b )
- {
- OWinStatus.m_bLineSwitch =b ;
- }
- //得到退化显示开关
- BOOL __export FAR PASCAL GetLineSwitch( void )
- {
- return OWinStatus.m_bLineSwitch ;
- }
- //-------------------------------------------------//
- //输入板窗口状态的接口函数
- //设置输入板窗口句柄
- void __export FAR PASCAL SetInputBarHandle( HWND hwnd )
- {
- OWinStatus.m_hInputWnd =hwnd ;
- }
- //得到输入板窗口句柄
- HWND __export FAR PASCAL GetInputBarHandle( void )
- {
- return OWinStatus.m_hInputWnd ;
- }
-
- //设置输入板窗口状态
- void __export FAR PASCAL SetInputBarStatus( int nStatus )
- {
- OWinStatus.m_nInputWinStatus =nStatus ;
-
- if( nStatus==2 )
- OHotKeyParam.SetEnableFlag( 1 , 0 ) ;
- else
- OHotKeyParam.SetEnableFlag( 1 , 1 ) ;
- }
- //得到输入板窗口状态
- int __export FAR PASCAL GetInputBarStatus( void )
- {
- return OWinStatus.m_nInputWinStatus ;
- }
- //显示或隐藏输入板窗口
- void __export FAR PASCAL SwitchInputBar( void )
- {
- if( !OWinStatus.m_hInputWnd ) //输入板窗口句柄为空
- return ;
-
- if( OWinStatus.m_nInputWinStatus==0 ) //当前为隐藏,显示之
- {
- ::SetWindowPos( OWinStatus.m_hInputWnd , HWND_TOPMOST ,
- 0 , 0 , 0 , 0 , SWP_SHOWWINDOW|
- SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE ) ;
- SetInputBarStatus( 1 ) ;
- }
- else if( OWinStatus.m_nInputWinStatus==1 ) //当前为显示,隐藏之
- {
- ::ShowWindow( OWinStatus.m_hInputWnd , SW_HIDE ) ;
- SetInputBarStatus( 0 ) ;
- }
- }
- //--------------------------------------------------------------------------------------------------//
- //输入内码和输入法
- //得到当前输入内码
- int __export FAR PASCAL GetInputCode( void )
- {
- return OWinStatus.m_nInputCode ;
- }
- //设置当前输入内码
- void __export FAR PASCAL SetInputCode( int n )
- {
- OWinStatus.m_nInputCode =n ;
- }
- //得到当前输入法
- int __export FAR PASCAL GetInputMethod( void )
- {
- return OWinStatus.m_nInputMethod ;
- }
- //设置当前输入法
- void __export FAR PASCAL SetInputMethod( int n )
- {
- OWinStatus.m_nInputMethod =n ;
- }
- //----------------------------------------------------------------------------------------//
- //得到输入板上三个状态按钮的状态
- BOOL __export FAR PASCAL GetInputStatus123( int n )
- {
- if( n<1 || n>3 )
- return 0 ;
- return OWinStatus.m_bInputStatus123[n-1] ;
- }
- //切换输入板上三个状态按钮的状态
- void __export FAR PASCAL SetInputStatus123( int n )
- {
- if( n<1 || n>3 )
- return ;
- //切换
- if( OWinStatus.m_bInputStatus123[n-1] )
- OWinStatus.m_bInputStatus123[n-1] =0 ;
- else
- OWinStatus.m_bInputStatus123[n-1] =1 ;
- }
- //---------------------------------------------------------------------------------------------------//
- //得到是否自动识别GB、BIG5码
- BOOL __export FAR PASCAL GetRecGbBig5( void )
- {
- return OWinStatus.m_bRecGbBig5 ;
- }
- //切换是否自动识别GB、BIG5码
- void __export FAR PASCAL SwitchRecGbBig5( void )
- {
- if( OWinStatus.m_bRecGbBig5 ) //原来是自动识别的
- OWinStatus.m_bRecGbBig5 =0 ;
- else
- OWinStatus.m_bRecGbBig5 =1 ;
- }
- //得到是否自动识别HZ码
- BOOL __export FAR PASCAL GetRecHz( void )
- {
- return OWinStatus.m_bRecHz ;
- }
- //切换是否自动识别HZ码
- void __export FAR PASCAL SwitchRecHz( void )
- {
- if( OWinStatus.m_bRecHz ) //原来是自动识别的
- OWinStatus.m_bRecHz =0 ;
- else
- OWinStatus.m_bRecHz =1 ;
- }
- //得到输出简体还是繁体汉字
- BOOL __export FAR PASCAL IsJt( void )
- {
- return OWinStatus.m_bIsJt ;
- }
- //切换输出简体还繁体汉字
- void __export FAR PASCAL SwitchJtFt( void )
- {
- if( OWinStatus.m_bIsJt ) //原来是简体
- OWinStatus.m_bIsJt =0 ; //改为繁体
- else
- OWinStatus.m_bIsJt =1 ;
- }
- //得到缺省输出内码
- int __export FAR PASCAL GetOutputCode( void )
- {
- return OWinStatus.m_nOutputCode ;
- }
- //设置缺省输出内码
- void __export FAR PASCAL SetOutputCode( int n )
- {
- OWinStatus.m_nOutputCode =n ;
- }
- //得到是否以系统内码为优先
- BOOL __export FAR PASCAL GetSystemFirst( void )
- {
- return OWinStatus.m_bSystemFirst ;
- }
- //切换是否以系统内码为优先
- void __export FAR PASCAL SwitchSystemFirst( void )
- {
- if( OWinStatus.m_bSystemFirst )
- OWinStatus.m_bSystemFirst =0 ;
- else
- OWinStatus.m_bSystemFirst =1 ;
- }
- //得到系统内码
- int __export FAR PASCAL GetSystemCode( void )
- {
- return OWinStatus.m_nSystemCode ;
- }
- //设置系统内码
- void __export FAR PASCAL SetSystemCode( int n )
- {
- OWinStatus.m_nSystemCode =n ;
- }
- //-------------------------------------------------------------------------------------------------------//
- //关于指取翻译的一些状态参数
- //得到是详细解释还是简单解释
- BOOL __export FAR PASCAL GetWinOrBar( void )
- {
- return OWinStatus.m_bWinOrBar ;
- }
- //切换详细解释与简单解释
- void __export FAR PASCAL SetWinOrBar( BOOL b )
- {
- OWinStatus.m_bWinOrBar =b ;
- }
- //指取翻译动作控制码
- //0表示没有挂上
- //1表示已经挂上,但还不能读,写
- //2表示可以写
- //3表示可以读
- void __export FAR PASCAL SetFingerTranslate( int n )
- {
- OWinStatus.m_nFingerTranslate =n ;
- }
- //得到指取翻译控制码
- int __export FAR PASCAL GetFingerTranslate( void )
- {
- return OWinStatus.m_nFingerTranslate ;
- }
- //设置是否需要指取翻译辅助键
- void __export FAR PASCAL SetFingerAidedKeyFlag( int n )
- {
- OWinStatus.m_nFingerAid =n ;
- if( n==1 ) //需要
- {
- if( GetFingerTranslate() ) //指取翻译有效
- OHotKeyParam.m_bEnable[3] =1 ; //辅助键有效
- }
- else //不需要
- OHotKeyParam.m_bEnable[3] =0 ; //辅助键有效
- }
- //得到是否需要指取翻译辅助键
- int __export FAR PASCAL GetFingerAidedKeyFlag( void )
- {
- return OWinStatus.m_nFingerAid ;
- }
- //---------------------------------------------------------------------------------//
- //设置退出时是否提示
- void __export FAR PASCAL SetPrompt( BOOL b )
- {
- OWinStatus.m_bPrompt =b ;
- }
- //得到退出时是否提示
- BOOL __export FAR PASCAL GetPrompt( void )
- {
- return OWinStatus.m_bPrompt ;
- }
- //设置是否同时退出Windows
- void __export FAR PASCAL SetExitWin( BOOL b )
- {
- OWinStatus.m_bExitWin =b ;
- }
- //得到是否同时退出Windows
- BOOL __export FAR PASCAL GetExitWin( void )
- {
- return OWinStatus.m_bExitWin ;
- }
- //设置是否是按钮消失鼠标的,0不是,1是
- void __export FAR PASCAL SetMenuCharFlag( BOOL b )
- {
- OWinStatus.m_bMenuCharFlag =b ;
- }
- //得到是否是按钮消失鼠标的,0不是,1是
- BOOL __export FAR PASCAL GetMenuCharFlag( void )
- {
- return OWinStatus.m_bMenuCharFlag ;
- }
- //判断Windows版本
- //低字0为Win,1为95;高字0为西文,1为外挂,2为中文Win
- DWORD __export FAR PASCAL GetWindowsVersion( void )
- {
- return OWinStatus.m_dwWinVersion ;
- }
- #ifdef __cplusplus
- }
- #endif