📄 status.cpp
字号:
//状态
#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 ;
}
//-------------------------------------------------//
//输入板窗口状态的接口函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -