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

📄 wcehelper.cpp

📁 WINCE SIMPLE mp3 Player
💻 CPP
字号:
#include "resourceppc.h"
#include "windows.h"
#include "wcehelper.h"

// global helpers
void SetFormatSize(DWORD dwSize, TCHAR szBuff[64], LPTSTR pszFmtKB, LPTSTR pszFmtMB)
{
	double fSize;
	TCHAR szSize[64];
	if (dwSize < 1024000)
		fSize = (double)dwSize/1024;	
	else
		fSize = (double)dwSize/1048576;
	swprintf(szSize, _T("%f"), fSize);
	SetFormatDouble(szSize, 64);
		
	if (dwSize < 1024000)
		swprintf(szBuff, pszFmtKB, szSize);
	else
		swprintf(szBuff, pszFmtMB, szSize);
}

void SetFormatDouble(LPTSTR pszDouble, UINT nSize)
{
	LPTSTR psz = new TCHAR[nSize];
	memset(psz, 0, sizeof(TCHAR) * nSize);
	GetNumberFormat(LOCALE_USER_DEFAULT, 0, pszDouble, NULL, psz, nSize);
	_tcscpy(pszDouble, psz);
	delete[] psz;
}

void SetFormatDateTime(SYSTEMTIME* pst, LPTSTR pszBuff, UINT nSize)
{
	LPTSTR psz = new TCHAR[nSize];
	memset(psz, 0, sizeof(TCHAR) * nSize);

	GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, pst, NULL, psz, nSize);
	memset(pszBuff, 0, sizeof(TCHAR) * nSize);
	_tcscpy(pszBuff, psz);
	memset(psz, 0, sizeof(TCHAR) * nSize);
	GetTimeFormat(LOCALE_USER_DEFAULT, 0, pst, NULL, psz, nSize);
	_tcscat(pszBuff, _T(" "));
	_tcscat(pszBuff, psz);
	delete[] psz;
}

HFONT CreatePointFont(int nPointSize, LPCTSTR pszFaceName, BOOL fBold)
{
#ifdef _WIN32_WCE
	LOGFONT logFont;
	memset(&logFont, 0, sizeof(LOGFONT));
	logFont.lfCharSet = DEFAULT_CHARSET;
	logFont.lfHeight = nPointSize;
	if (fBold)
		logFont.lfWeight = 700;
	_tcscpy(logFont.lfFaceName, pszFaceName);

	HDC hDC = ::GetDC(NULL);

	POINT pt;
	pt.y = ::GetDeviceCaps(hDC, LOGPIXELSY) * logFont.lfHeight;
	pt.y /= 720;
	POINT ptOrg = { 0, 0 };
	logFont.lfHeight = -abs(pt.y - ptOrg.y);
	ReleaseDC(NULL, hDC);

	return CreateFontIndirect(&logFont);
#else
	return NULL;
#endif
}

// class CWinceHepler
CWinceHepler::CWinceHepler() : 
m_hAygShell(NULL), m_pSHInitDialog(NULL)
{
	m_hAygShell = LoadLibrary(_T("aygshell.dll"));
	if (m_hAygShell) {
		(FARPROC&)m_pSHInitDialog = GetProcAddress(m_hAygShell, _T("SHInitDialog"));
		(FARPROC&)m_pSHCreateMenuBar = GetProcAddress(m_hAygShell, _T("SHCreateMenuBar"));		
	}
	m_hCoreDll = LoadLibrary(_T("coredll.dll"));
	if (m_hCoreDll) {
		(FARPROC&)m_pSipGetInfo = GetProcAddress(m_hCoreDll, _T("SipGetInfo"));
	}
}

CWinceHepler::~CWinceHepler()
{
	if (m_hAygShell)
		FreeLibrary(m_hAygShell);
	if (m_hCoreDll)
		FreeLibrary(m_hCoreDll);
}

BOOL CWinceHepler::DefDlgPaintProc(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
	if (IsPocketPC()) {
		PAINTSTRUCT ps;
		HDC hDC = BeginPaint(hDlg, &ps);
		POINT pt[2] = {{0, 24},{GetSystemMetrics(SM_CXSCREEN),24}};
		Polyline(hDC, pt, sizeof(pt)/sizeof(POINT));
		EndPaint(hDlg, &ps);
		return TRUE;
	}
	return FALSE;
}

BOOL CWinceHepler::DefDlgCtlColorStaticProc(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
	HDC hDC = (HDC)wParam;
	if (GetDlgCtrlID((HWND)lParam) == IDC_TITLE ||
		GetDlgCtrlID((HWND)lParam) == IDC_STATIC_CURRENT_TEXT)
	{
		SetBkMode(hDC, TRANSPARENT);
		SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHT));
		return (long)GetStockObject(WHITE_BRUSH);
	}
	else
		return FALSE;
}

void CWinceHepler::SHInitDialog(HWND hwndDlg)
{
	if (m_hAygShell && m_pSHInitDialog) {
		SHINITDLGINFO shidi;
		shidi.dwMask = SHIDIM_FLAGS;
		shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIZEDLGFULLSCREEN;
		shidi.hDlg = hwndDlg;
		m_pSHInitDialog(&shidi);
	}
}

HWND CWinceHepler::SHCreateMenuBar(HWND hwndParent, int nMenuID)
{
	if (m_pSHCreateMenuBar) {
		SHMENUBARINFO mbi;
		memset(&mbi, 0, sizeof(SHMENUBARINFO));
		mbi.cbSize = sizeof(SHMENUBARINFO);
		mbi.hwndParent = hwndParent;
		mbi.nToolBarId = nMenuID;
		mbi.hInstRes = g_hInst;
		
		if (m_pSHCreateMenuBar(&mbi)) 
			return mbi.hwndMB;
	}
	return NULL;
}

BOOL CWinceHepler::IsSipPanelVisible()
{
	if (m_pSipGetInfo) {
		SIPINFO si;
		memset(&si, 0, sizeof(SIPINFO));
		si.cbSize = sizeof(SIPINFO);
		m_pSipGetInfo(&si);
		if ((si.fdwFlags & SIPF_ON))
			return TRUE;
	}
	return FALSE;
}

BOOL CWinceHepler::IsSmartPhone()
{
	TCHAR szPlatform[MAX_PATH] = {0};
	SystemParametersInfo(SPI_GETPLATFORMTYPE, MAX_PATH, szPlatform, 0);
	return _tcscmp(szPlatform, _T("SmartPhone")) == 0 ? TRUE : FALSE;
}

BOOL CWinceHepler::IsPocketPC()
{
	TCHAR szPlatform[MAX_PATH] = {0};
	SystemParametersInfo(SPI_GETPLATFORMTYPE, MAX_PATH, szPlatform, 0);
	return _tcscmp(szPlatform, _T("PocketPC")) == 0 ? TRUE : FALSE;
}

⌨️ 快捷键说明

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