📄 multilangview.cpp
字号:
// MultiLangView.cpp : implementation of the CMultiLangView class
//
#include "stdafx.h"
#include "MultiLang.h"
#include "MultiLangDoc.h"
#include "MultiLangView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView
IMPLEMENT_DYNCREATE(CMultiLangView, CView)
BEGIN_MESSAGE_MAP(CMultiLangView, CView)
//{{AFX_MSG_MAP(CMultiLangView)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView construction/destruction
CMultiLangView::CMultiLangView()
{
// TODO: add construction code here
}
CMultiLangView::~CMultiLangView()
{
}
BOOL CMultiLangView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView drawing
void CMultiLangView::OnDraw(CDC* pDC)
{
CMultiLangDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//新添加的
pDC->SetBkMode(TRANSPARENT);
CMultiLangApp *app=(CMultiLangApp *)AfxGetApp();
if(app->m_iLan==1)
{
pDC->TextOut(220,30,"German Format");
pDC->TextOut(350,30,"English Format");
pDC->TextOut(150,50,"Number:");
pDC->TextOut(150,65,"Time:");
pDC->TextOut(150,80,"Currency:");
pDC->TextOut(150,95,"Date:");
}
else
{
pDC->TextOut(220,30,"德文格式");
pDC->TextOut(350,30,"英文格式");
pDC->TextOut(150,50,"数值:");
pDC->TextOut(150,65,"时间:");
pDC->TextOut(150,80,"货币:");
pDC->TextOut(150,95,"日期:");
}
//显示数值
char szNum[]="12345000.67890";
char *pszBuf;
int nSize;
LCID lcid=MAKELCID(LANG_GERMAN,SORT_DEFAULT);
//取得数值长度
nSize=GetNumberFormat(lcid,0,szNum,NULL,NULL,0);
pszBuf=new char[nSize];
//按德文方式显示数值
GetNumberFormat(lcid,0,szNum,NULL,pszBuf,nSize);
pDC->TextOut(220,50,pszBuf);
delete[] pszBuf;
//取当前的系统时间长度
nSize=GetTimeFormat(lcid,0,NULL,NULL,NULL,0);
pszBuf=new char[nSize];
//按德文方式显示时间
GetTimeFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(220,65,pszBuf);
delete[] pszBuf;
//取当前的系统货币长度
char szMoney[]="-123456.789";
nSize=GetCurrencyFormat(lcid,0,szMoney,NULL,NULL,0);
pszBuf=new char[nSize];
//按德文方式显示货币
GetCurrencyFormat(lcid,0,szMoney,NULL,pszBuf,nSize);
pDC->TextOut(220,80,pszBuf);
delete[] pszBuf;
//取当前的系统日期长度
nSize=GetDateFormat(lcid,0,NULL,NULL,NULL,0);
pszBuf=new char[nSize];
//按德文方式显示日期
GetDateFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(220,95,pszBuf);
delete[] pszBuf;
//按英语方式显示
lcid=MAKELCID(LANG_ENGLISH,SORT_DEFAULT);
//取得数值长度
nSize=GetNumberFormat(lcid,0,szNum,NULL,NULL,0);
pszBuf=new char[nSize];
//按英文方式显示数值
GetNumberFormat(lcid,0,szNum,NULL,pszBuf,nSize);
pDC->TextOut(350,50,pszBuf);
delete[] pszBuf;
//取当前的系统时间长度
nSize=GetTimeFormat(lcid,0,NULL,NULL,NULL,0);
pszBuf=new char[nSize];
//按英文方式显示时间
GetTimeFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(350,65,pszBuf);
delete[] pszBuf;
//取当前的系统货币长度
nSize=GetCurrencyFormat(lcid,0,szMoney,NULL,NULL,0);
pszBuf=new char[nSize];
//按英文方式显示货币
GetCurrencyFormat(lcid,0,szMoney,NULL,pszBuf,nSize);
pDC->TextOut(350,80,pszBuf);
delete[] pszBuf;
//取当前的系统日期长度
nSize=GetDateFormat(lcid,0,NULL,NULL,NULL,0);
pszBuf=new char[nSize];
//按英文方式显示日期
GetDateFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(350,95,pszBuf);
delete[] pszBuf;
//显示全程语言格式 --中文
lcid=::GetThreadLocale();
if(app->m_iLan==1)
{
if(!app->m_bSupported)
{
pDC->TextOut(150,155,"SetThreadLocale is only supported on Win NT system");
pDC->TextOut(150,170,"Show Current default thread locale:");
}
else
pDC->TextOut(150,170,"the current thread Locale is Chinese:");
pDC->TextOut(150,190,"Number:");
pDC->TextOut(150,205,"Time:");
pDC->TextOut(150,220,"Currency:");
pDC->TextOut(150,235,"Date:");
}
else
{
if(!app->m_bSupported)
{
pDC->TextOut(150,155,"仅仅Win NT系统支持SetThreadLocale函数");
pDC->TextOut(150,170,"显示当前线程缺省语言:");
}
else
pDC->TextOut(150,170,"当前线程语言格式为中文:");
pDC->TextOut(150,190,"数值:");
pDC->TextOut(150,205,"时间:");
pDC->TextOut(150,220,"货币:");
pDC->TextOut(150,235,"日期:");
}
//按线程方式显示数值
nSize=GetNumberFormat(lcid,0,szNum,NULL,NULL,0);
pszBuf=new char[nSize];
GetNumberFormat(lcid,0,szNum,NULL,pszBuf,nSize);
pDC->TextOut(300,190,pszBuf);
delete[] pszBuf;
//按线程方式显示时间
nSize=::GetTimeFormat(lcid,0,NULL,NULL,pszBuf,0);
pszBuf=new char[nSize];
::GetTimeFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(300,205,pszBuf);
delete[] pszBuf;
//按线程方式显示货币
nSize=GetCurrencyFormat(lcid,0,szMoney,NULL,NULL,0);
pszBuf=new char[nSize];
GetCurrencyFormat(lcid,0,szMoney,NULL,pszBuf,nSize);
pDC->TextOut(300,220,pszBuf);
delete[] pszBuf;
//按线程方式显示日期
nSize=GetDateFormat(lcid,0,NULL,NULL,NULL,0);
pszBuf=new char[nSize];
GetDateFormat(lcid,0,NULL,NULL,pszBuf,nSize);
pDC->TextOut(300,235,pszBuf);
delete[] pszBuf;
//结束新添加
}
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView printing
BOOL CMultiLangView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMultiLangView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMultiLangView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView diagnostics
#ifdef _DEBUG
void CMultiLangView::AssertValid() const
{
CView::AssertValid();
}
void CMultiLangView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMultiLangDoc* CMultiLangView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMultiLangDoc)));
return (CMultiLangDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMultiLangView message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -