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

📄 unknownwndproc.cpp

📁 vc环境下的pgp源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*____________________________________________________________________________
	Copyright (C) 1997 Network Associates Inc. and affiliated companies.
	All rights reserved.

	$Id: UnknownWndProc.cpp,v 1.12 1999/04/26 19:13:24 dgal Exp $
____________________________________________________________________________*/

#include <windows.h>
#include <commctrl.h>
#include "PluginInfo.h"
#include "HookProcs.h"
#include "UIutils.h"
#include "TextIO.h"
#include "Prefs.h"
#include "resource.h"

void CreateMessageWindowGUI(HWND hDlg, PluginInfo *plugin, WNDPROC lpOldProc);

static LRESULT CALLBACK ToolbarWndProc(HWND hDlg, 
									   UINT msg,
									   WPARAM wParam, 
									   LPARAM lParam);


LRESULT CALLBACK UnknownWndProc(HWND hDlg, 
								UINT msg,
								WPARAM wParam, 
								LPARAM lParam)
{
	WNDPROC lpOldProc;
	PluginInfo *plugin;

	lpOldProc = (WNDPROC)GetProp( hDlg, "oldproc" );
	plugin = GetPluginInfo(hDlg);

	switch(msg)
	{
	case WM_PARENTNOTIFY:
		if (LOWORD(wParam) == WM_CREATE)
		{
			CreateMessageWindowGUI(hDlg, plugin, lpOldProc);
			break;
		}

	case WM_DESTROY:
		{
			FreePluginInfo(plugin);
			break;
		}
	}

	return CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);
}


void CreateMessageWindowGUI(HWND hDlg, PluginInfo *plugin, WNDPROC lpOldProc)
{
	HWND hSizableRebar;
	HWND hReBar;
	TBBUTTON tbb[4];
	HIMAGELIST hilToolbar;
	HIMAGELIST hilHotToolbar;
	HINSTANCE hInst;
	int nPGPkeysBMP;
	int nPGPkeysSTR = -1;
	HBITMAP hbmpPGPkeys;
	char szText[255];
	MENUITEMINFO menuInfo;
	BOOL bSend = FALSE;
	int nCount;
	HDC	hDC;
	int	iNumBits;
	DWORD dwSize;
	int nX;
	int nY;

	hSizableRebar = FindWindowEx(hDlg, NULL, "SizableRebar", NULL);
	if (hSizableRebar != NULL)
		plugin->bOE5 = TRUE;

	plugin->hStatusBar = FindWindowEx(hDlg, NULL, "msctls_statusbar32", NULL);

	if (plugin->bOE5)
	{
		hReBar = FindWindowEx(hSizableRebar, NULL, "ReBarWindow32", NULL);
		plugin->hToolbar = FindWindowEx(hReBar, NULL, "ToolbarWindow32", 
							NULL);
		plugin->hMenuToolbar = FindWindowEx(hReBar, plugin->hToolbar, 
									"ToolbarWindow32", NULL);

		if (!plugin->hMenuToolbar || !plugin->hToolbar || !plugin->hStatusBar)
			return;

		hDC = GetDC (NULL);		// DC for desktop
		iNumBits = GetDeviceCaps (hDC, BITSPIXEL) * 
					GetDeviceCaps (hDC, PLANES);
		ReleaseDC (NULL, hDC);
	}
	else
	{
		hReBar = FindWindowEx(hDlg, NULL, "ReBarWindow32", NULL);
		plugin->hToolbar = FindWindowEx(hReBar, NULL, "ToolbarWindow32", 
							NULL);
		plugin->hMainMenu = GetMenu(hDlg);
		
		if (!plugin->hMainMenu || !plugin->hToolbar || !plugin->hStatusBar)
			return;
	}
	
	plugin->hEdit = NULL;
	plugin->szReplyText = NULL;
	hInst = UIGetInstance();
	
	// Subclass the Window
	if (plugin->bOE5)
		nCount = SendMessage(plugin->hMenuToolbar, TB_BUTTONCOUNT, 0, 0);
	else
		nCount = GetMenuItemCount(plugin->hMainMenu);

	if (nCount == 8)
	{
		SetProp(plugin->hToolbar, TOOLBAR_TYPE_PROP, (HANDLE) 1);
		SetWindowLong(hDlg, GWL_WNDPROC, (DWORD)SendMsgWndProc);
		plugin->nPGPPosition = 5;
		bSend = TRUE;
	}
	else if (nCount == 6)
	{
		SetProp(plugin->hToolbar, TOOLBAR_TYPE_PROP, (HANDLE) 0);
		SetWindowLong(hDlg, GWL_WNDPROC, (DWORD)ReadMsgWndProc);
		plugin->nPGPPosition = 4;
	}
	else
	{
		SetWindowLong(hDlg, GWL_WNDPROC, (DWORD)lpOldProc);
		FreePluginInfo(plugin);
		return;
	}
	
	if (plugin->bOE5)
	{
		if (plugin->hPGPMenu != NULL)
			DestroyMenu(plugin->hPGPMenu);
		
		plugin->hPGPMenu = CreatePopupMenu();
		plugin->nPGPPosition = -1;
	}
	else
	{
		menuInfo.cbSize = sizeof(MENUITEMINFO);
		menuInfo.fMask = MIIM_SUBMENU;
		GetMenuItemInfo(plugin->hMainMenu, plugin->nPGPPosition, TRUE, 
			&menuInfo);
		plugin->hToolsMenu = menuInfo.hSubMenu;
		
		plugin->hPGPMenu = CreatePopupMenu();
		InsertMenu(plugin->hMainMenu, plugin->nPGPPosition, 
			MF_BYPOSITION | MF_STRING | MF_POPUP, 
			(UINT) plugin->hPGPMenu, "&PGP");
	}

	SendMessage(plugin->hToolbar, TB_BUTTONSTRUCTSIZE,
		(WPARAM) sizeof(TBBUTTON), 0);

	dwSize = SendMessage(plugin->hToolbar, TB_GETBUTTONSIZE, 0, 0);
	nX = LOWORD(dwSize) + 8;
	nY = HIWORD(dwSize);

	hilToolbar = (HIMAGELIST) SendMessage(plugin->hToolbar, TB_GETIMAGELIST, 
								0, 0);
	if (plugin->bOE5)
		hilHotToolbar = (HIMAGELIST) SendMessage(plugin->hToolbar, 
										TB_GETHOTIMAGELIST, 0, 0);
	
	if (bSend)
	{
		int nEncryptBMP;
		int nSignBMP;
		HBITMAP hbmpEncrypt;
		HBITMAP hbmpSign;
		int nEncryptSTR = -1;
		int nSignSTR = -1;
		
		if (!(plugin->bOE5))
		{
			GetMenuString(plugin->hToolsMenu, ENCRYPT_SMIME_POS, szText, 254, 
				MF_BYPOSITION);
			
			if (!strcmp(szText, "&Encrypt"))
			{
				UIGetString(szText, 254, IDS_MENU_PGP_ENCRYPT);
				InsertMenu(plugin->hToolsMenu, ENCRYPT_PGP_POS, 
					MF_BYPOSITION | MF_STRING, IDC_ENCRYPT_PGP, szText);
				
				UIGetString(szText, 254, IDS_MENU_PGP_SIGN);
				InsertMenu(plugin->hToolsMenu, SIGN_PGP_POS, 
					MF_BYPOSITION | MF_STRING, IDC_SIGN_PGP, szText);
				
				menuInfo.cbSize = sizeof(MENUITEMINFO);
				menuInfo.fMask = MIIM_TYPE;
				menuInfo.fType = MFT_STRING;
				menuInfo.dwTypeData = szText;
				
				UIGetString(szText, 254, IDS_MENU_SMIME_ENCRYPT);
				SetMenuItemInfo(plugin->hToolsMenu, ENCRYPT_SMIME_POS, TRUE, 
					&menuInfo);
				
				UIGetString(szText, 254, IDS_MENU_SMIME_SIGN);
				SetMenuItemInfo(plugin->hToolsMenu, SIGN_SMIME_POS, TRUE, 
					&menuInfo);
			}
			else
			{
				UIGetString(szText, 254, IDS_MENU_PGP_ENCRYPT);
				AppendMenu(plugin->hToolsMenu, MF_STRING, IDC_ENCRYPT_PGP, 
					szText);
				
				UIGetString(szText, 254, IDS_MENU_PGP_SIGN);
				AppendMenu(plugin->hToolsMenu, MF_STRING, IDC_SIGN_PGP, 
					szText);
			}
		}
		
		if (plugin->bOE5)
		{
			if (iNumBits <= 8)
			{
				hbmpEncrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_ENCRYPTOFF4));
				hbmpSign = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_SIGNOFF4));
			}
			else
			{
				hbmpEncrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_ENCRYPTOFF));
				hbmpSign = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_SIGNOFF));
			}
		}
		else
		{
			hbmpEncrypt = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_ENCRYPT));
			hbmpSign = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_SIGN));
		}

		nEncryptBMP = ImageList_AddMasked(hilToolbar, hbmpEncrypt, 
						TRANSPARENT_COLOR); 
		DeleteObject(hbmpEncrypt);
		plugin->nEncryptImage = nEncryptBMP;
		
		nSignBMP = ImageList_AddMasked(hilToolbar, hbmpSign, 
						TRANSPARENT_COLOR); 
		DeleteObject(hbmpSign);
		plugin->nSignImage = nSignBMP;
		
		if (plugin->bOE5)
		{
			TBBUTTON tbOE;
			int nIndex;
			int nEncryptSMIME;
			int nSignSMIME;

			if (iNumBits <= 8)
			{
				hbmpEncrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_ENCRYPTLARGE4));
				hbmpSign = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_SIGNLARGE4));
			}
			else
			{
				hbmpEncrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_ENCRYPTLARGE));
				hbmpSign = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_SIGNLARGE));
			}

			ImageList_AddMasked(hilHotToolbar, hbmpEncrypt, 
				TRANSPARENT_COLOR);

			ImageList_AddMasked(hilHotToolbar, hbmpSign, 
				TRANSPARENT_COLOR);

			DeleteObject(hbmpEncrypt);
			DeleteObject(hbmpSign);

			UIGetString(szText, 254, IDS_BUTTON_PGP_ENCRYPT);
			nEncryptSTR = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
							(LPARAM) szText);

			UIGetString(szText, 254, IDS_BUTTON_PGP_SIGN);
			nSignSTR = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
							(LPARAM) szText);
			
			plugin->nEncryptString = nEncryptSTR;
			plugin->nSignString = nSignSTR;

			UIGetString(szText, 254, IDS_BUTTON_SMIME_ENCRYPT);
			nEncryptSMIME = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
								(LPARAM) szText);

			UIGetString(szText, 254, IDS_BUTTON_SMIME_SIGN);
			nSignSMIME = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
							(LPARAM) szText);

			nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
						IDC_OE5_ENCRYPT_SMIME, 0);

			SendMessage(plugin->hToolbar, TB_GETBUTTON, nIndex,
				(LPARAM) &tbOE);

			tbOE.iString = nEncryptSMIME;
			SendMessage(plugin->hToolbar, TB_DELETEBUTTON, nIndex, 0);
			SendMessage(plugin->hToolbar, TB_INSERTBUTTON, nIndex, 
				(LPARAM) &tbOE); 

			nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
						IDC_OE5_SIGN_SMIME, 0);

			SendMessage(plugin->hToolbar, TB_GETBUTTON, nIndex,
				(LPARAM) &tbOE);

			tbOE.iString = nSignSMIME;
			SendMessage(plugin->hToolbar, TB_DELETEBUTTON, nIndex, 0);
			SendMessage(plugin->hToolbar, TB_INSERTBUTTON, nIndex, 
				(LPARAM) &tbOE); 
		}

		tbb[1].iBitmap = nEncryptBMP;
		tbb[1].idCommand = IDC_ENCRYPT_PGP;
		tbb[1].fsState = TBSTATE_ENABLED;
		tbb[1].fsStyle = TBSTYLE_CHECK;
		tbb[1].dwData = 0;
		tbb[1].iString = nEncryptSTR;
		
		tbb[2].iBitmap = nSignBMP;
		tbb[2].idCommand = IDC_SIGN_PGP;
		tbb[2].fsState = TBSTATE_ENABLED;
		tbb[2].fsStyle = TBSTYLE_CHECK;

⌨️ 快捷键说明

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