📄 gmtoolmanager.cpp
字号:
// GMToolManager.cpp: implementation of the CGMToolManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#ifdef _GMTOOL_
#include "GMToolManager.h"
#include "ObjectManager.h"
#include "ItemManager.h"
#include "CheatMsgParser.h"
#include "FilteringTable.h"
#include "ChatManager.h"
#include "MHMap.h"
#include "Commdlg.h"
#include "CommCtrl.h"
#include "MHFile.h"
#include "MugongManager.h"
#include "MainGame.h"
extern HWND _g_hWnd;
extern HINSTANCE g_hInst;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CGMToolManager)
//extern HWND ghWnd;
CGMToolManager::CGMToolManager()
{
m_hWndDlg = NULL;
ZeroMemory( m_hWndSub, sizeof( m_hWndSub ) );
m_nSelectMenu = eMenu_Count;
m_bShow = FALSE;
m_bCanUse = FALSE;
m_bSubShow = FALSE;
m_cbChannelCount = 0;
m_lBossStartIndex = 0;
m_hWndChatList = NULL;
m_nNumNow = 0;
m_nNumWait = 0;
m_nBufLen = 0;
m_bLogin = FALSE;
m_nPower = eGM_POWER_MAX; //3
m_hWndLoginDlg = NULL;
//烙矫
m_nNullMove = 0;
}
CGMToolManager::~CGMToolManager()
{
}
BOOL CGMToolManager::CreateGMDialog()
{
if( m_hWndDlg ) return FALSE;
m_hWndDlg = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GMDIALOG), _g_hWnd, GMDlgProc );
m_hWndLoginDlg = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GMLOGIN), _g_hWnd, GMLoginDlgProc );
CreateGMSubDialog();
// CHEATMGR->SetCheatEnable( TRUE );
return TRUE;
}
BOOL CGMToolManager::CreateGMSubDialog()
{
m_hWndSub[eMenu_Move] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_MOVE_DIALOG), m_hWndDlg, GMSubMoveDlgProc );
m_hWndSub[eMenu_Where] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_WHERE_DIALOG), m_hWndDlg, GMSubWhereDlgProc );
m_hWndSub[eMenu_Item] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_ITEM_DIALOG), m_hWndDlg, GMSubItemDlgProc );
m_hWndSub[eMenu_Hide] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_HIDE_DIALOG), m_hWndDlg, GMSubHideDlgProc );
m_hWndSub[eMenu_Chat] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_CHAT_DIALOG), m_hWndDlg, GMSubChatDlgProc );
m_hWndSub[eMenu_PK] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_PK_DIALOG), m_hWndDlg, GMSubPKDlgProc );
m_hWndSub[eMenu_Discon] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_DISCON_DIALOG), m_hWndDlg, GMSubDisconDlgProc );
m_hWndSub[eMenu_Block] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_BLOCK_DIALOG), m_hWndDlg, GMSubBlockDlgProc );
m_hWndSub[eMenu_Mob] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_REGEN_DIALOG), m_hWndDlg, GMSubRegenDlgProc );
m_hWndSub[eMenu_Counsel]= CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_COUNSEL_DIALOG), m_hWndDlg, GMSubCounselDlgProc );
m_hWndSub[eMenu_Notice] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_NOTICE_DIALOG), m_hWndDlg, GMSubNoticeDlgProc );
m_hWndSub[eMenu_Event] = CreateDialog( g_hInst, MAKEINTRESOURCE(IDD_GM_EVENT_DIALOG), m_hWndDlg, GMSubEventDlgProc );
return TRUE;
}
BOOL CGMToolManager::DestroyGMDialog()
{
if( !m_hWndDlg ) return FALSE;
SaveChatList();
// DestroyWindow( m_hWndDlg );
m_hWndDlg = NULL;
m_hWndLoginDlg = NULL;
DestroyGMSubDialog();
m_nSelectMenu = eMenu_Count;
return TRUE;
}
BOOL CGMToolManager::DestroyGMSubDialog()
{
for( int i = 0 ; i < eMenu_Count ; ++i )
{
if( m_hWndSub[i] )
{
// DestroyWindow( m_hWndSub[i] );
m_hWndSub[i] = NULL;
}
}
return TRUE;
}
void CGMToolManager::ShowGMDialog( BOOL bShow, BOOL bUpdate )
{
if( !m_hWndDlg ) return;
if( !m_bCanUse ) return;
//咯扁辑何磐 肺弊牢(Login) 眉农 窍绰镑
if( bShow && !m_bLogin && MAINGAME->GetUserLevel() == eUSERLEVEL_GM )
{
ShowWindow( m_hWndLoginDlg, SW_SHOW );
return;
}
else if( MAINGAME->GetUserLevel() > eUSERLEVEL_GM )
{
return;
}
//咯扁鳖瘤
if( bShow )
{
ShowWindow( m_hWndDlg, SW_SHOWNA );
SetPositionByMainWindow();
}
else
{
GMTOOLMGR->OnClickMenu( eMenu_Count );
ShowWindow( m_hWndDlg, SW_HIDE );
}
if( bUpdate )
m_bShow = bShow;
//烙矫肺 咯扁困摹
static int bRegist = FALSE;
int i;
char bufNum[20];
//combobox殿废
if( !bRegist )
{
// if( m_hWndSub[eMenu_Item] )
{
ITEMMGR->SetItemIfoPositionHead();
ITEM_INFO* pInfo = NULL;
while( pInfo = ITEMMGR->GetItemInfoData() )
{
if( pInfo->ItemKind & eEQUIP_ITEM )
{
switch( pInfo->ItemKind )
{
case eEQUIP_ITEM_WEAPON:
{
if( pInfo->ItemGrade == 0 )
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_WEAPON, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
break;
case eEQUIP_ITEM_DRESS:
case eEQUIP_ITEM_HAT:
case eEQUIP_ITEM_SHOES:
{
if( pInfo->ItemGrade == 0 )
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_CLOTHES, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
break;
case eEQUIP_ITEM_RING:
case eEQUIP_ITEM_CAPE:
case eEQUIP_ITEM_NECKLACE:
case eEQUIP_ITEM_ARMLET:
case eEQUIP_ITEM_BELT:
{
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_ACCESSORY, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
break;
}
}
else if( pInfo->ItemKind & eMUGONG_ITEM )
{
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILLBOOK, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILL, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
else if( pInfo->ItemKind & eYOUNGYAK_ITEM )
{
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_POTION, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
else
{
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_ETC, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
}
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_WEAPON, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_CLOTHES, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_ACCESSORY, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILLBOOK, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_POTION, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_ETC, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILL, CB_SETCURSEL, 0, 0 );
//Grade
for( i = 0 ; i <= 9 ; ++i )
{
wsprintf( bufNum, "+%d", i );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_WEAPONGRADE, CB_ADDSTRING, 0, (LPARAM)bufNum );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_CLOTHESGRADE, CB_ADDSTRING, 0, (LPARAM)bufNum );
}
for( i = 0 ; i <= 12 ; ++i )
{
wsprintf( bufNum, "%d", i );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILLSUNG, CB_ADDSTRING, 0, (LPARAM)bufNum );
}
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_WEAPONGRADE, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_CLOTHESGRADE, CB_SETCURSEL, 0, 0 );
SetDlgItemInt( m_hWndSub[eMenu_Item], IDC_GMITEM_EDT_POTION, 1, TRUE );
SetDlgItemInt( m_hWndSub[eMenu_Item], IDC_GMITEM_EDT_ETC, 1, TRUE );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_SPN_POTION, UDM_SETRANGE, 0, (LPARAM)MAKELONG(50, 1) );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_SPN_ETC, UDM_SETRANGE, 0, (LPARAM)MAKELONG(50, 1) );
SendDlgItemMessage( m_hWndSub[eMenu_Item], IDC_GMITEM_CMB_SKILLSUNG, CB_SETCURSEL, 0, 0 );
}
// if( m_hWndSub[eMenu_Mob] )
{
//阁胶磐 殿废
BASE_MONSTER_LIST* pList = NULL;
for( i = 1 ; pList = GAMERESRCMNGR->GetMonsterListInfo( i ) ; ++i )
{
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MOBNAME, CB_ADDSTRING, 0, (LPARAM)pList->Name );
}
m_lBossStartIndex = i - 1;
//焊胶 : 炔釜荐龋厘焙
pList = GAMERESRCMNGR->GetMonsterListInfo( 1000 );
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MOBNAME, CB_ADDSTRING, 0, (LPARAM)pList->Name );
///////
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MOBNAME, CB_SETCURSEL, 0, 0 );
//ITEM 殿废
ITEMMGR->SetItemIfoPositionHead();
ITEM_INFO* pInfo = NULL;
while( pInfo = ITEMMGR->GetItemInfoData() )
{
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_ITEM, CB_ADDSTRING, 0, (LPARAM)pInfo->ItemName );
}
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_ITEM, CB_SETCURSEL, 0, 0 );
//Map 殿废
char* pStrMap = NULL;
for( i = 1 ; i < MAX_MAP_ENUMCOUNT ; ++i )
{
if( *( pStrMap = GetMapName(i) ) )
{
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
SendDlgItemMessage( m_hWndSub[eMenu_Move], IDC_GMMOVE_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
SendDlgItemMessage( m_hWndSub[eMenu_Discon], IDC_GMDISCON_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
SendDlgItemMessage( m_hWndSub[eMenu_Chat], IDC_GMCHAT_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
SendDlgItemMessage( m_hWndSub[eMenu_Notice], IDC_GMNOTICE_CMB_MAP, CB_ADDSTRING, 0, (LPARAM)pStrMap );
}
}
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MAP, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Move], IDC_GMMOVE_CMB_MAP, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Discon], IDC_GMDISCON_CMB_MAP, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Chat], IDC_GMCHAT_CMB_MAP, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_MAP, CB_SETCURSEL, 0, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Notice], IDC_GMNOTICE_CMB_MAP, CB_SETCURSEL, 0, 0 );
//Channel 殿废
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)"ALL" );
SendDlgItemMessage( m_hWndSub[eMenu_Chat], IDC_GMCHAT_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)"ALL" );
SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)"ALL" );
for( i = 1 ; i <= m_cbChannelCount ; ++i )
{
wsprintf( bufNum, "%d", i );
SendDlgItemMessage( m_hWndSub[eMenu_Move], IDC_GMMOVE_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)bufNum );
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)bufNum );
SendDlgItemMessage( m_hWndSub[eMenu_Chat], IDC_GMCHAT_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)bufNum );
SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_CHANNEL, CB_ADDSTRING, 0, (LPARAM)bufNum );
}
SendDlgItemMessage( m_hWndSub[eMenu_Move], IDC_GMMOVE_CMB_CHANNEL, CB_SETCURSEL, gChannelNum, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_CHANNEL, CB_SETCURSEL, gChannelNum, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_Chat], IDC_GMCHAT_CMB_CHANNEL, CB_SETCURSEL, gChannelNum, 0 );
SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_CHANNEL, CB_SETCURSEL, gChannelNum, 0 );
}
//event 殿废
/*
float gExpRate = 1.0f; // 版氰摹 掘绰 厚啦
float gItemRate = 1.0f; // 酒捞袍 靛而 厚啦
float gMoneyRate = 1.0f; // 捣 掘绰 厚啦
float gDamageReciveRate = 1.0f; // 罐绰 单固瘤 厚啦
float gDamageRate = 1.0f; // 林绰 单固瘤 厚啦
float gNaeRuykRate = 1.0f; // 郴仿家葛 厚啦
float gUngiSpeed = 1.0f; // 款扁炼侥 胶乔靛
float gPartyExpRate = 1.0f; // 颇萍版氰摹 掘绰 厚啦
float gAbilRate = 1.0f; // 漂扁摹 掘绰 厚啦
float gGetMoney = 1.0f; // 掘绰捣狼 剧
“经验值获得率”
“物品掉落率”
“金钱掉落率”
“受到的伤害值”
“造成的伤害值”
“内力消耗”
“打坐回复速度”
“组队经验值获得”
“技能点获得”
“金钱掉落额数”
*/
#ifdef TAIWAN_LOCAL
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"经验值获得率" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"物品掉落率" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"金钱掉落率" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"受到的伤害值" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"造成的伤害值" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"内力消耗" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"打坐回复速度" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"组队经验值获得" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"技能点获得" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"金钱掉落额数" );
#else
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"版氰摹啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"酒捞袍靛而啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"捣靛而啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"罐绰单固瘤啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"林绰单固瘤啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"郴仿家葛啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"款扁炼侥加档" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"颇萍版氰摹啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"漂扁荐访摹啦" );
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_ADDSTRING, 0, (LPARAM)"捣靛而咀荐啦" );
#endif
SendDlgItemMessage( m_hWndSub[eMenu_Event], IDC_GMEVENT_CMB_EVENT, CB_SETCURSEL, 0, 0 );
bRegist = TRUE;
}
}
BOOL CGMToolManager::IsGMDialogMessage( LPMSG pMessage)
{
if( IsWindow( m_hWndDlg ) && IsDialogMessage( m_hWndDlg, pMessage ) )
return TRUE;
if( m_nSelectMenu < eMenu_Count )
if( m_hWndSub[m_nSelectMenu] )
{
if( IsWindow( m_hWndSub[m_nSelectMenu] ) && IsDialogMessage( m_hWndSub[m_nSelectMenu], pMessage ) )
return TRUE;
}
return FALSE;
}
void CGMToolManager::SetPositionByMainWindow()
{
RECT rcMain, rcDlg;
GetWindowRect( _g_hWnd, &rcMain );
GetWindowRect( m_hWndDlg, &rcDlg );
int nDlgWidth = rcDlg.right - rcDlg.left;
int X = rcMain.left - nDlgWidth;
if( X < 0 ) X = rcMain.left;
int Y = rcMain.top+GetSystemMetrics(SM_CYSIZEFRAME)+GetSystemMetrics(SM_CYCAPTION);
SetWindowPos( m_hWndDlg, NULL, X, Y, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE );
SetPositionSubDlg();
}
void CGMToolManager::SetPositionSubDlg()
{
RECT rcDlg;
GetWindowRect( m_hWndDlg, &rcDlg );
if( m_nSelectMenu < eMenu_Count )
{
if( m_hWndSub[m_nSelectMenu] )
{
int subX = rcDlg.right;
int subY = rcDlg.top + 36 + m_nSelectMenu * 28;
SetWindowPos( m_hWndSub[m_nSelectMenu], NULL, subX, subY, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -