📄 cutf8edit.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CUTF8Edit.cpp,v 1.1 2002/11/05 02:10:53 wjb Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include "CString.h"
#include "CUTF8Edit.h"
#include "UWinVersion.h"
#include "UTF8Edit.h"
_USING_PGP
// Class CUTF8Edit member functions
CUTF8Edit::CUTF8Edit()
{
mDestroyed = FALSE;
mNumbersOnly = FALSE;
mUnicodeOS = UWinVersion::IsWinNT4Compatible();
mContentsUTF8.Empty();
}
CUTF8Edit::~CUTF8Edit()
{
mContentsUTF8.Empty();
}
LRESULT APIENTRY
CUTF8ESubclassProc (
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
CUTF8Edit *ce;
ce=(CUTF8Edit *)GetProp(hWnd,"CECLASS");
switch (uMsg)
{
case WM_CHAR:
{
if(ce->mNumbersOnly)
{
if(ce->mUnicodeOS)
{
if(iswprint(wParam))
{
if(!iswdigit(wParam))
return 0;
}
}
else
{
if(isprint(wParam))
{
if(!isdigit(wParam))
return 0;
}
}
}
break;
}
case WM_DESTROY:
{
ce->SaveWindowText();
ce->mDestroyed = TRUE;
UTF8EditDestroy (ce->mhwndOld);
return 0;
}
}
if (ce->mUnicodeOS)
{
return CallWindowProcW (ce->mOrigProc,
hWnd, uMsg, wParam, lParam);
}
else
{
return CallWindowProcA (ce->mOrigProc,
hWnd, uMsg, wParam, lParam);
}
}
void
CUTF8Edit::Subclass(HWND hWnd)
{
mhwndOld=hWnd;
mhwndNew=UTF8EditInit (mhwndOld);
SetProp(mhwndNew,"CECLASS", this );
if (mUnicodeOS)
{
mOrigProc = (WNDPROC)
SetWindowLongW(mhwndNew,GWL_WNDPROC,(LONG)CUTF8ESubclassProc);
}
else
{
mOrigProc = (WNDPROC)
::SetWindowLongA(mhwndNew,GWL_WNDPROC,(LONG)CUTF8ESubclassProc);
}
}
void
CUTF8Edit::NumbersOnly()
{
mNumbersOnly=TRUE;
}
void
CUTF8Edit::SaveWindowText()
{
if(!mDestroyed)
{
int len;
char *sz;
mContentsUTF8.Empty();
len=UTF8EditGetTextLength (mhwndOld)+1;
sz=(char *)malloc(len);
if(sz!=NULL)
{
UTF8EditGetText (mhwndOld, sz, len);
mContentsUTF8=sz;
free(sz);
}
}
}
void
CUTF8Edit::GetWindowText(CString &text)
{
SaveWindowText();
text=mContentsUTF8;
}
void
CUTF8Edit::SetWindowText(const char *text)
{
UTF8EditSetText (mhwndOld,(char *)text);
}
CUTF8Edit::SetSel(PGPInt32 start, PGPInt32 end) const
{
::SendMessage(mhwndNew,EM_SETSEL, start, end);
}
PGPBoolean
CUTF8Edit::EnableWindow(PGPBoolean enable) const
{
return ::EnableWindow(mhwndNew, enable);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -