⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 media.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					{// ff
						if(m_pMedia)
							IMEDIA_FastForward(m_pMedia, TIME_INMILLISECONDS);
					}
					else if (m_nButtonIndex == BUTTON_PAUSE)
					{// pause
						if(m_pMedia)
						{
							if (IsPause())
								IMEDIA_Resume(m_pMedia);
							else 
								IMEDIA_Pause(m_pMedia);
						}
					}
				}
			
				break;
			}
			status = TRUE;
		}
		else if((m_nState==STATE_OPTION) && m_pMenu)
		{		
			if (IMENUCTL_HandleEvent(m_pMenu, evt, wParam, dwParam))
				status = TRUE;
		}
		break;
	case EVT_CREATEMEDIA:
	case EVT_CREATEMEDIA_QCP:
		{
			int   nRet;			
			ReleaseObj((void **)(&m_pMedia));
			if (evt == EVT_CREATEMEDIA)
				nRet = AEEMediaUtil_CreateMedia(m_pApplet->m_pIShell, &m_md, &m_pMedia);
			else
			{
				nRet = ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_MEDIAQCP, (void **)&m_pMedia);
				if (nRet == SUCCESS)
					nRet = IMEDIA_SetMediaData(m_pMedia, &m_md);
			}
			
			if (SUCCESS != nRet)
				;	//erro IDS_ERR_CREATEMEDIA
			else if (SUCCESS != IMEDIA_RegisterNotify(m_pMedia, MediaNotify, this))
				;//erro IDS_ERR_MEDIA
			else	//success
			{
				if (m_bPlayResume)
				{// 检查是否是resume时产生的消息
					IMEDIA_GetTotalTime(m_pMedia);
					if (AEE_SUCCESS == IMEDIA_Play(m_pMedia))
						m_bPlayRec = TRUE;
				}
				m_bPlayResume = TRUE;
/*
				if (SUCCESS != IMEDIA_GetTotalTime(m_pMedia))
				{
					IMEDIA_Play(m_pMedia);
				}
*/
			}
			status = TRUE;			
		}
	case EVT_COMMAND:
		if (m_nState!=STATE_OPTION)
			return TRUE;
		m_nMenuSelect = wParam;
		status = TRUE;
		switch(m_nMenuSelect) {
		case IDS_OPTION:
			ShowOption(m_nType & 0xffff);
			break;
		case IDS_SHOWPIC:
		case IDS_PLAY:
			PlayFile(m_szFileName);
			break;
		case IDS_SAVEPIC:			
		case IDS_DOWNSOUND:
			if (!CheckFileSpace(m_pApplet->m_pIShell))
			{
				AEERect rcScreen;
				rcScreen.x=0;
				rcScreen.y=0;
				rcScreen.dx=m_pDevice->cxScreen;
				rcScreen.dy=m_pDevice->cyScreen;
				ClearScreen();
				ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_ERR_SPACE);
				m_nState=STATE_ERRO;
			}
			else
			{
				int nResult = SaveContent(m_pApplet->m_pIShell, &m_pFileMgr, m_szFileName, m_szName, m_nType, m_nID);
				if (nResult == SAVEFILE_SUCCESS)
				{
					m_nState = 	STATE_OPTION;
					DeleteFile(m_pApplet->m_pIShell,&m_pFileMgr,m_szFileName);
					Release();
				}
				else
				{
					//保存失败
					DeleteFile(m_pApplet->m_pIShell,&m_pFileMgr,m_szFileName);
					AEERect rcScreen;
					rcScreen.x=0;
					rcScreen.y=0;
					rcScreen.dx=m_pDevice->cxScreen;
					rcScreen.dy=m_pDevice->cyScreen;
					ClearScreen();
					if (nResult == SAVEFILE_EXIST)
						ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_ERR_FILEEXIST);
					else
						ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &rcScreen, m_szName, IDS_ERR_SPACE);
					m_nState=STATE_ERRO;
				}
			}
			break;
		case IDS_WALLPAPER:
			SetWallPaper();
//			Release();
			break;
		case IDS_SETRING:
			SetRinger();
//			Release();
			break;
		case IDS_DELETE:
			// 删除文件和索引		
			DeleteFile(m_pApplet->m_pIShell,&m_pFileMgr,m_szFileName);	
			DeleteFavoriteByIndex(m_pApplet->m_pIShell, &m_pFileMgr,m_nID);
			if((m_nType & 0xffff0000)==SOUND_MID)
			{
				RemoveRinger();
			}
			/*
			else if (!HIDE_WALLPAPER_BUTTON&&(m_nType & 0xffff0000)==PIC_PNG||(m_nType & 0xffff0000)==PIC_GIF||(m_nType & 0xffff0000)==PIC_JPG||(m_nType & 0xffff0000)==PIC_BMP)
			{
				RemoveWallPaper();
			}*/
			Release();
			break;
		default:
			status = FALSE;
		}
	}
	
	return status;
}

void CMedia::ShowOption(int nType)
{
	AECHAR szNull[1];
	MEMSET(&szNull, 0, sizeof(AECHAR));

	m_nState=STATE_OPTION;
	if(!m_bResum)
	{	
		ReleaseMenu();
		ReleaseMedia();
		ReleaseProgCtl();
		ClearScreen();
		ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_MENUCTL, (void **) &m_pMenu);
		if (m_pMenu != NULL && IMENUCTL_IsActive(m_pMenu))
		{
			return;
		}
	
	}
	else
	{
		if(m_pMenu && IMENUCTL_IsActive(m_pMenu))		
			IMENUCTL_Redraw(m_pMenu);
		return;		
	}
	
	IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);

	// set menu title
	IMENUCTL_SetTitle(m_pMenu, RES_FILE, NULL, m_szName);
	
	if(nType==CONTENT_SOUND)
	{
		if(m_bMyDoc)
		{
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_PLAY, IDS_PLAY, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_PLAY,IDS_PLAY,NULL,NULL);
			if((m_nType & 0xffff0000)==SOUND_MID)
				AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_SETRING, IDS_SETRING, 0);
//				IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_SETRING,IDS_SETRING,NULL,NULL);
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_DELETE, IDS_DELETE, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_DELETE,IDS_DELETE,NULL,NULL);
		}
		else
		{
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_PLAY, IDS_PLAY, 0);
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_DOWN, IDS_DOWNSOUND, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_PLAY,IDS_PLAY,NULL,NULL);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_DOWNSOUND,IDS_DOWNSOUND,NULL,NULL);
		}	
		
	}
	else if(nType==CONTENT_PIC)
	{
		if(m_bMyDoc)
		{
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_FULLSCREEN, IDS_SHOWPIC, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_SHOWPIC,IDS_SHOWPIC,NULL,NULL);
//			if(VERSION!=2)
			if((m_nType & 0xffff0000)!=PIC_BCI&&!HIDE_WALLPAPER_BUTTON)
				AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_SETWALLPAPER, IDS_WALLPAPER, 0);
//				IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_WALLPAPER,IDS_WALLPAPER,NULL,NULL);
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_DELETE, IDS_DELETE, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_DELETE,IDS_DELETE,NULL,NULL);
		}
		else
		{
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_FULLSCREEN, IDS_SHOWPIC, 0);
			AddMenuItem(m_pMenu, NULL, szNull, BM_MENU_DOWN, IDS_SAVEPIC, 0);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_SHOWPIC,IDS_SHOWPIC,NULL,NULL);
//			IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_SAVEPIC,IDS_SAVEPIC,NULL,NULL);
		}
	}
	// implementation of lightening of main menu background color
	{
	
		AEEMenuColors colors;
		colors.wMask = MC_BACK | MC_SEL_BACK;
		colors.cBack = MAKE_BACK_COLOR;	
		colors.cSelBack = MAKE_SEL_COLOR;
		IMENUCTL_SetColors(m_pMenu, &colors);
	}
	// end of lightening of main menu background color
	IMENUCTL_EnableCommand(m_pMenu, true);
	IMENUCTL_SetActive(m_pMenu, true);
	IDISPLAY_Update(m_pApplet->m_pIDisplay);

}

void CMedia::Display()
{
	if(m_nState==STATE_OPTION)
		ShowOption(m_nType & 0xffff);
	else if(m_nState==STATE_CONTENT)
		PlayFile(m_szFileName);	
}

void CMedia::ReleaseMenu()
{
	if (m_pMenu)
    {
        IMENUCTL_SetActive(m_pMenu, false);
        IMENUCTL_Release(m_pMenu);
    }
    m_pMenu = NULL;
	m_nMenuSelect = 0;
}



void CMedia::MediaNotify(void *pUser, AEEMediaCmdNotify *pCmdNotify)
{
	CMedia *   pme = (CMedia *)pUser;
	uint16         nTextID = 0;
	
	switch (pCmdNotify->nStatus)
	{
	case MM_STATUS_SEEK_FAIL:
	case MM_STATUS_PAUSE_FAIL:
	case MM_STATUS_RESUME_FAIL:
		;//nTextID = IDS_ERR_PLAYCTL_CMD;
		break;
	}
	
	if (pCmdNotify->nCmd == MM_CMD_PLAY || pCmdNotify->nCmd == MM_CMD_RECORD)  // IMEDIA_Play/IMEDIA_Record events
	{ 
		//nTextID = pCmdNotify->nCmd == MM_CMD_PLAY ? IDS_PLAY : IDS_RECORD;
		switch (pCmdNotify->nStatus)
		{
		case MM_STATUS_START:
			pme->m_nButtonIndex = BUTTON_STOP;
//            IMENUCTL_SetSel(pme->m_pMenu, BM_STOP);
            break;
			
		case MM_STATUS_MEDIA_SPEC:
            // pCmdNotify->pCmdData may point to media specs structure
            // defined in AEEMediaFormats.h. Save this info.
            break;
			
		case MM_STATUS_TICK_UPDATE:  // Typcally, one-second update
            pme->m_dwPlayPos++;
            if (!pme->m_dwTotalTime) // If no total time increase by 20!
				pme->m_wPct = (pme->m_wPct + 20) % 100;
            break; 
			
		case MM_STATUS_SEEK:
           // nTextID = IDS_SEEK;
            if (pCmdNotify->dwSize)
				pme->m_dwPlayPos = (uint32)pCmdNotify->pCmdData / 1000;
            break;
			
		case MM_STATUS_PAUSE:
           // nTextID = IDS_PAUSE;
            if (pCmdNotify->dwSize)
				pme->m_dwPlayPos = (uint32)pCmdNotify->pCmdData / 1000;
            break;
			
		case MM_STATUS_RESUME:
            if (pCmdNotify->dwSize)
				pme->m_dwPlayPos = (uint32)pCmdNotify->pCmdData / 1000;
            break;
			
		case MM_STATUS_DONE:    // playback done
		case MM_STATUS_ABORT:   // playback aborted
			{
			//	nTextID = (pCmdNotify->nStatus == MM_STATUS_DONE) ? IDS_STOP : IDS_ABORT;
				pme->m_bPlayRec = FALSE;
				pme->m_dwPlayPos = 0;
				pme->m_wPct = 0;
				
				pme->m_nButtonIndex = BUTTON_PLAY;
//				IMENUCTL_SetSel(pme->m_pMenu, BM_PLAY);		       
				break;
			}
		}
		if(pme->m_nState==STATE_CONTENT)
			UpdateProgCtl(pme, pCmdNotify->nCmd, pCmdNotify->nSubCmd, nTextID);
	} // MM_CMD_PLAY
	else if (pCmdNotify->nCmd == MM_CMD_GETTOTALTIME)
	{
		if (pCmdNotify->nStatus == MM_STATUS_DONE || pCmdNotify->nStatus == MM_STATUS_ABORT)
		{
			pme->m_dwTotalTime = ((uint32)pCmdNotify->pCmdData) / 1000;
//			if (AEE_SUCCESS == IMEDIA_Play(pme->m_pMedia))
//				pme->m_bPlayRec = TRUE;
//			UpdateProgCtl(pme, pCmdNotify->nCmd, pCmdNotify->nSubCmd, nTextID);
		}
	} // MM_CMD_GETTOTALTIME
	else if (pCmdNotify->nCmd == MM_CMD_SETMEDIAPARM)
	{
		if (pCmdNotify->nSubCmd == MM_PARM_VOLUME && pCmdNotify->nStatus == MM_STATUS_DONE)
		{
			if (SUCCESS == IMEDIA_GetMediaParm(pme->m_pMedia, MM_PARM_VOLUME, (int32 *)&pme->m_wVolume, NULL))
				SendMediaNotify(pme, MM_CMD_GETMEDIAPARM, MM_PARM_VOLUME, MM_STATUS_DONE, (void *)(uint32)pme->m_wVolume, sizeof(pme->m_wVolume));
			return;
		}
	} // MM_CMD_SETMEDIAPARM
	else if (pCmdNotify->nCmd == MM_CMD_GETMEDIAPARM) // IMEDIA_GetMediaParm() events
	{
		if (pCmdNotify->nSubCmd == MM_PARM_VOLUME && pCmdNotify->nStatus == MM_STATUS_DONE)
		{
			pme->m_wVolume = (uint16)(uint32)pCmdNotify->pCmdData;		
		
// 			UpdateProgCtl(pme, pCmdNotify->nCmd, pCmdNotify->nSubCmd, nTextID);
	
			// Set the prog timer so that the display stays for few seconds.
			//ISHELL_SetTimer(pme->m_pIShell, MP_PROG_TIMER, (PFNNOTIFY)CPlayerWin_ProgTimerNotify, pme);
		}
	}  // MM_CMD_GETMEDIAPARM
}

/*===========================================================================
This function sends a media command notification.
===========================================================================*/
void CMedia::SendMediaNotify(CMedia *pme, int nCmd, int nSubCmd, int nStatus, void *pData, uint32 dwSize)
{
	AEEMediaCmdNotify mcn;
	AEECLSID          cls;
	
	if(pme->m_pMedia==NULL) return;
	IMEDIA_GetClassID(pme->m_pMedia, &cls);
	mcn.clsMedia = cls;
	mcn.pIMedia = pme->m_pMedia;
	mcn.nCmd = nCmd;
	mcn.nSubCmd = nSubCmd;
	mcn.nStatus = nStatus;
	mcn.pCmdData = pData;
	mcn.dwSize = dwSize;
	MediaNotify(pme, &mcn);
}

void CMedia::ShowMedia()
{
	AEERect rect;
	
	if(!m_bResum)
	{
		ReleaseMenu();
//		ReleaseMedia();
		CancelShowPicCallback();
	}

	IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);

	// 画背景图
// 	DrawPicRect(m_imgBack, 0, 0, m_pDevice->cxScreen, m_pDevice->cyScreen);

	// 写标题
	rect.x=0;
	rect.y=0;
	rect.dx=m_pDevice->cxScreen;
	rect.dy=PLAYICON_HEIGHT;
	IDISPLAY_DrawText(m_pApplet->m_pIDisplay, AEE_FONT_BOLD, m_szName, -1, 0, 0, &rect, IDF_RECT_FILL);
	
	if(m_bResum)
	{
		return;	
	}

	//动画
	m_nPic=1;
	ShowPicCallback(this);
}

boolean CMedia::IsPause()
{
	boolean  bChg;
	if(m_pMedia==NULL) return FALSE;
	int      nState = IMEDIA_GetState(m_pMedia, &bChg);
	
	if (bChg)
		return FALSE;
	
	return (nState == MM_STATE_PLAY_PAUSE || nState == MM_STATE_RECORD_PAUSE);
}

boolean CMedia::ProgCtl_Init(CProgCtl *pme, AEERect *pRectMain)
{
//	AEERect  rect;
	int      x, y;
	int      dxProg, dyProg;
	
	MEMCPY(&pme->m_rectMain, pRectMain, sizeof(AEERect));
	
	
//	if (ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_STATIC, (void **)&pme->m_pTitle))
//		return FALSE;
	
	// ProgBar rect
	dxProg = 100;//pRectMain->dx / (PROGBAR_DX_DIV);
	dyProg = pRectMain->dy / PROGBAR_DY_DIV;
//	x = pRectMain->x + pRectMain->dx - dxProg + 1;
	x = (pRectMain->x + pRectMain->dx - dxProg)/2;// + 1;
	y = pRectMain->y + pRectMain->dy / 2 - dyProg/2;
	
/*	if (dxProg > PROGBAR_DX_OFFSET)
		dxProg -= PROGBAR_DX_OFFSET;*/
	SETAEERECT(&pme->m_rectBar, x, y, dxProg, dyProg);
	
/*	SETAEERECT(&rect, pRectMain->x + 1, pRectMain->y + 1, pRectMain->dx - dxProg, pRectMain->dy);
	ISTATIC_SetRect(pme->m_pTitle, &rect);
	ISTATIC_SetProperties(pme->m_pTitle, ST_CENTERTEXT | ST_NOSCROLL);*/
	
	return TRUE;
}

void CMedia::ReleaseProgCtl()
{
//	if (m_ProgCtl.m_pTitle)
//		ReleaseObj((void * *)&m_ProgCtl.m_pTitle);
//	m_ProgCtl.m_pTitle=NULL;
}

void CMedia::UpdateProgCtl(CMedia *pme,int nCmd, int nSubCmd, uint16 wResID)
{
	char     sz[32];
	AECHAR   szBuf[32];	
	AECHAR m_szText[64];

	
	if ( !ISHELL_LoadResString(pme->m_pApplet->m_pIShell, RES_FILE, wResID, m_szText, sizeof(m_szText)) )
		m_szText[0] = (AECHAR)0;
	
	if (nCmd == MM_CMD_PLAY || nCmd == MM_CMD_RECORD)
	{
		SPRINTF(sz, " %02d:%02d/%02d:%02d", pme->m_dwPlayPos/60, pme->m_dwPlayPos%60, pme->m_dwTotalTime/60, pme->m_dwTotalTime%60);
		STRTOWSTR(sz, szBuf, sizeof(szBuf));
		WSTRCAT(m_szText, szBuf);
		
		if (pme->m_dwTotalTime)
			pme->m_wPct = (uint16)((100 * pme->m_dwPlayPos) / pme->m_dwTotalTime);
	}
	else if (nCmd == MM_CMD_GETTOTALTIME)
	{
		SPRINTF(sz, " %02d:%02d/%02d:%02d", pme->m_dwPlayPos/60, pme->m_dwPlayPos%60, pme->m_dwTotalTime/60, pme->m_dwTotalTime%60);
		STRTOWSTR(sz, szBuf, sizeof(szBuf));
		WSTRCAT(m_szText, szBuf);
	}
	else if (nCmd == MM_CMD_GETMEDIAPARM && nSubCmd == MM_PARM_VOLUME)
	{
		SPRINTF(sz, "[%u]", pme->m_wVolume);
		STRTOWSTR(sz, szBuf, sizeof(szBuf));
		WSTRCAT(m_szText, szBuf);
		pme->m_wPct = (100 * pme->m_wVolume) / AEE_MAX_VOLUME;
	}
	else
	{
		pme->m_wPct = 0;
	}
	
	ProgCtl_SetPos(pme, m_szText, pme->m_wPct);
	
	IDISPLAY_Update(pme->m_pApplet->m_pIDisplay);
}

void CMedia::ProgCtl_SetPos(CMedia *pme, AECHAR *psz, uint16 wPct)
{
//	int      nFits;
//	AEERect  rect;
	int      nLen = WSTRLEN(psz);
	AECHAR   chSave = (AECHAR)0;
/*	if(!pme->m_ProgCtl.m_pTitle) return;
	ISTATIC_GetRect(pme->m_ProgCtl.m_pTitle, &rect);
	IDISPLAY_MeasureTextEx(pme->m_pApplet->m_pIDisplay, AEE_FONT_NORMAL, psz, -1, rect.dx,  &nFits);
	if (nFits < nLen)
	{
		chSave = psz[nFits];
		psz[nFits] = (AECHAR)0;
	}
	ISTATIC_SetText(pme->m_ProgCtl.m_pTitle, NULL, psz, AEE_FONT_NORMAL, AEE_FONT_NORMAL);
	if (nFits < nLen)
		psz[nFits] = chSave;
	ISTATIC_Redraw(pme->m_ProgCtl.m_pTitle);*/
	AEERect  rc;
	
	MEMCPY(&rc, &pme->m_ProgCtl.m_rectBar, sizeof(AEERect));
	
	if(wPct > 100)
		wPct = 100;
	
	IDISPLAY_DrawFrame(pme->m_pApplet->m_pIDisplay, &rc, AEE_FT_RAISED, CLR_SYS_SCROLLBAR);
	rc.dx = (rc.dx * wPct) / 100;
	IDISPLAY_FillRect(pme->m_pApplet->m_pIDisplay, &rc, CLR_PROG_FILL);
	RGBVAL   clr = IDISPLAY_SetColor(pme->m_pApplet->m_pIDisplay, CLR_USER_FRAME, CLR_SYS_DK_SHADOW);
	IDISPLAY_FrameRect(pme->m_pApplet->m_pIDisplay, &pme->m_ProgCtl.m_rectMain);
	IDISPLAY_SetColor(pme->m_pApplet->m_pIDisplay, CLR_USER_FRAME, clr);
}

void CMedia::ReleaseMedia()
{
	if (m_pMedia)
	{
		IMEDIA_Stop(m_pMedia);
		IMEDIA_RegisterNotify(m_pMedia, NULL, NULL);		
		IMEDIA_Release(m_pMedia);
		m_bPlayRec = FALSE;
		m_dwPlayPos = 0;
		m_wPct = 0;
		m_pMedia = NULL;		
	}
	CancelShowPicCallback();
}

void CMedia::Suspend()
{
	if (m_pObject)
	{
		m_pObject->Suspend();
	}
	else
	{
		if(m_pMenu)
			IMENUCTL_SetActive (m_pMenu, FALSE);
		if(m_pMedia)
		{
			m_bPlayResume = m_bPlayRec;
			ReleaseMedia();
/*
			IMEDIA_RegisterNotify(m_pMedia, NULL, NULL);
			if(IsPlay())
				IMEDIA_Resume(m_pMedia);
			CancelShowPicCallback();
*/
		}
		if(m_pImage)
		{
			IIMAGE_Stop(m_pImage);		
		}
		if(m_nState==STATE_ERRO)
		{
			if(m_pIStatic)			
				ISTATIC_SetActive(m_pIStatic,FALSE);
		}
		else
			ClearScreen();
	}
}

void CMedia::Resume()
{
	m_bResum = TRUE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -