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

📄 cutf8edit.cpp

📁 可以实现对邮件的加密解密以及签名
💻 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 + -