📄 sendmsgwndproc.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 1997 Network Associates Inc. and affiliated companies.
All rights reserved.
$Id: SendMsgWndProc.cpp,v 1.18 1999/04/26 19:13:24 dgal Exp $
____________________________________________________________________________*/
#include <windows.h>
#include <commctrl.h>
#include <process.h>
#include "PluginInfo.h"
#include "HookProcs.h"
#include "UIutils.h"
#include "TextIO.h"
#include "Recipients.h"
#include "pgpErrors.h"
#include "pgpEncode.h"
#include "pgpOptionList.h"
#include "pgpSDKPrefs.h"
#include "resource.h"
#include "EncryptSign.h"
static BOOL EncryptSignMessage(HWND hwnd);
static void DoubleLineFeeds(char *szOriginal, char *szNew);
static void UpdateMenus(HWND hwnd, PluginInfo *plugin);
typedef struct _AttStruct
{
char *String0;
char *String1;
HANDLE hFile0;
HANDLE hFile1;
} AttStruct;
LRESULT CALLBACK SendMsgWndProc(HWND hDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
WNDPROC lpOldProc;
PluginInfo *plugin;
lpOldProc = (WNDPROC)GetProp( hDlg, "oldproc" );
plugin = GetPluginInfo(hDlg);
if (plugin != NULL)
{
if (msg == plugin->nCopyDoneMsg)
{
if (wParam)
{
if (plugin->nAction == PluginAction_Encrypt)
{
if (EncryptSignMessage(hDlg))
_beginthread(DoPasteThread, 0, hDlg);
else
RestoreClipboardText(hDlg);
}
else if (plugin->nAction == PluginAction_Reply)
{
char *szText;
szText = GetReplyText();
if (szText != NULL)
{
char *szReplyText;
char *szReplyHeader;
GetMessageText(hDlg, FALSE, &szReplyHeader);
if (FindReplyHeader(szReplyHeader))
{
szReplyText = (char *)
calloc(strlen(szReplyHeader) +
strlen(szText) * 2 + 1, 1);
strcpy(szReplyText, szReplyHeader);
AddReply(szReplyText, szText);
SetMessageText(hDlg, szReplyText);
free(szReplyText);
_beginthread(DoPasteThread, 0, hDlg);
}
else
RestoreClipboardText(hDlg);
free(szReplyHeader);
FreeReplyText();
}
else
RestoreClipboardText(hDlg);
}
else
RestoreClipboardText(hDlg);
}
else
RestoreClipboardText(hDlg);
return 0;
}
if (msg == plugin->nPasteDoneMsg)
{
RestoreClipboardText(hDlg);
if (plugin->hDlg != NULL)
return CallWindowProc(lpOldProc, plugin->hDlg, plugin->nMsg,
plugin->wParam, plugin->lParam);
else
return 0;
}
}
switch(msg)
{
case WM_DESTROY:
{
KillTimer(hDlg, WATCH_TOOLBAR_TIMER);
break;
}
case WM_TIMER:
if (wParam == CORRECT_TOOLBAR_TIMER)
{
KillTimer(hDlg, CORRECT_TOOLBAR_TIMER);
SendMessage(plugin->hToolbar, TB_SETBUTTONWIDTH, 0,
MAKELONG(24, 24));
SendMessage(plugin->hToolbar, TB_AUTOSIZE, 0, 0);
UpdateMenus(hDlg, plugin);
return 0;
}
else if (wParam == PASTE_REPLY_TIMER)
{
char *szText;
// Paste any reply text
KillTimer(hDlg, PASTE_REPLY_TIMER);
szText = GetReplyText();
if (szText != NULL)
{
HWND hDocHost;
HWND hMimeEdit;
HWND hMessage;
if (!SaveClipboardText(hDlg))
return 0;
plugin->nAction = PluginAction_Reply;
plugin->hDlg = NULL;
if (plugin->bOE5)
{
hDocHost = FindWindowEx(hDlg, NULL, "ME_DocHost", NULL);
hMimeEdit = FindWindowEx(hDocHost, NULL,
"##MimeEdit_Server", NULL);
hMessage = FindWindowEx(hMimeEdit, NULL,
"Internet Explorer_Server", NULL);
SetFocus(hDocHost);
SetFocus(hMimeEdit);
SetFocus(hMessage);
}
else
{
hDocHost = FindWindowEx(hDlg, NULL, "Ath_DocHost", NULL);
hMessage = FindWindowEx(hDocHost, NULL,
"Internet Explorer_Server", NULL);
SetFocus(hDocHost);
SetFocus(hMessage);
}
_beginthread(DoCopyThread, 0, hDlg);
}
return 0;
}
break;
case WM_MENUSELECT:
{
UINT uFlags = (UINT) HIWORD(wParam);
char szText[255];
BOOL bPluginMenu = FALSE;
if (uFlags & MF_POPUP)
{
if (LOWORD(wParam) == plugin->nPGPPosition+1)
UpdateMenus(hDlg, plugin);
}
switch(LOWORD(wParam))
{
case IDC_ENCRYPT_SMIME:
case IDC_OE5_ENCRYPT_SMIME:
{
UIGetString(szText, 254, IDS_STATUS_SMIME_ENCRYPT);
bPluginMenu = TRUE;
break;
}
case IDC_SIGN_SMIME:
case IDC_OE5_SIGN_SMIME:
{
UIGetString(szText, 254, IDS_STATUS_SMIME_SIGN);
bPluginMenu = TRUE;
break;
}
case IDC_ENCRYPT_PGP:
{
UIGetString(szText, 254, IDS_STATUS_PGP_ENCRYPT);
bPluginMenu = TRUE;
break;
}
case IDC_SIGN_PGP:
{
UIGetString(szText, 254, IDS_STATUS_PGP_SIGN);
bPluginMenu = TRUE;
break;
}
}
if (bPluginMenu)
{
CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);
SendMessage(plugin->hStatusBar, SB_SETTEXT,
255 | SBT_NOBORDERS, (LPARAM) szText);
return 0;
}
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_SENDMESSAGE_MENU:
case IDC_SENDMESSAGE_BUTTON:
case IDC_SENDLATER:
case IDC_POSTARTICLE_MENU:
case IDC_POSTARTICLE_BUTTON:
case IDC_POSTLATER:
case IDC_OE5_SENDMESSAGE:
case IDC_OE5_SENDLATER:
{
if (plugin->bEncrypt || plugin->bSign)
{
HWND hDocHost;
HWND hMimeEdit;
HWND hMessage;
if (!SaveClipboardText(hDlg))
return 0;
plugin->nAction = PluginAction_Encrypt;
plugin->hDlg = hDlg;
plugin->nMsg = msg;
plugin->wParam = wParam;
plugin->lParam = lParam;
if (plugin->bOE5)
{
hDocHost = FindWindowEx(hDlg, NULL,
"ME_DocHost", NULL);
hMimeEdit = FindWindowEx(hDocHost, NULL,
"##MimeEdit_Server", NULL);
hMessage = FindWindowEx(hMimeEdit, NULL,
"Internet Explorer_Server", NULL);
SetFocus(hDocHost);
SetFocus(hMimeEdit);
SetFocus(hMessage);
}
else
{
hDocHost = FindWindowEx(hDlg, NULL,
"Ath_DocHost", NULL);
hMessage = FindWindowEx(hDocHost, NULL,
"Internet Explorer_Server", NULL);
SetFocus(hDocHost);
SetFocus(hMessage);
}
_beginthread(DoCopyThread, 0, hDlg);
return 0;
}
break;
}
case IDC_ENCRYPT_PGP:
if (plugin->bOE5)
{
plugin->bEncrypt = !(plugin->bEncrypt);
SendMessage(plugin->hToolbar, TB_CHECKBUTTON,
IDC_ENCRYPT_PGP, MAKELONG(plugin->bEncrypt, 0));
return 0;
}
else
{
MENUITEMINFO menuInfo;
menuInfo.cbSize = sizeof(MENUITEMINFO);
menuInfo.fMask = MIIM_STATE;
GetMenuItemInfo(plugin->hToolsMenu, IDC_ENCRYPT_PGP,
FALSE, &menuInfo);
if (menuInfo.fState & MFS_CHECKED)
plugin->bEncrypt = FALSE;
else
plugin->bEncrypt = TRUE;
UpdateMenus(hDlg, plugin);
return 0;
}
case IDC_SIGN_PGP:
if (plugin->bOE5)
{
plugin->bSign = !(plugin->bSign);
SendMessage(plugin->hToolbar, TB_CHECKBUTTON,
IDC_SIGN_PGP, MAKELONG(plugin->bSign, 0));
return 0;
}
else
{
MENUITEMINFO menuInfo;
menuInfo.cbSize = sizeof(MENUITEMINFO);
menuInfo.fMask = MIIM_STATE;
GetMenuItemInfo(plugin->hToolsMenu, IDC_SIGN_PGP,
FALSE, &menuInfo);
if (menuInfo.fState & MFS_CHECKED)
plugin->bSign = FALSE;
else
plugin->bSign = TRUE;
UpdateMenus(hDlg, plugin);
return 0;
}
}
break;
}
case WM_INITMENUPOPUP:
if (plugin->bOE5)
{
int nAddrBook;
MENUITEMINFO menuInfo;
char szAddrBook[256];
char szMenu[256];
LRESULT lResult;
UIGetString(szAddrBook, 254, IDS_MENU_OEADDRBOOK);
nAddrBook = GetMenuItemCount((HMENU) wParam);
menuInfo.cbSize = sizeof(MENUITEMINFO);
menuInfo.fMask = MIIM_TYPE;
menuInfo.dwTypeData = szMenu;
menuInfo.cch = 255;
GetMenuItemInfo((HMENU) wParam, nAddrBook - 1, TRUE, &menuInfo);
if (strstr(szMenu, szAddrBook))
{
lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam,
lParam);
strcpy(szMenu, "&PGP");
menuInfo.cbSize = sizeof(MENUITEMINFO);
menuInfo.fMask = MIIM_TYPE | MIIM_ID | MIIM_SUBMENU |
MIIM_STATE;
menuInfo.fType = MFT_STRING;
menuInfo.wID = IDC_PGPMENU;
menuInfo.fState = MFS_ENABLED;
menuInfo.hSubMenu = plugin->hPGPMenu;
menuInfo.dwTypeData = szMenu;
InsertMenuItem((HMENU) wParam, nAddrBook, TRUE, &menuInfo);
plugin->nPGPPosition = nAddrBook;
UIGetString(szMenu, 254, IDS_MENU_SMIME_ENCRYPT);
menuInfo.fMask = MIIM_TYPE;
menuInfo.fType = MFT_STRING;
menuInfo.dwTypeData = szMenu;
SetMenuItemInfo((HMENU) wParam, OE5_ENCRYPT_SMIME_POS, TRUE,
&menuInfo);
UIGetString(szMenu, 254, IDS_MENU_PGP_ENCRYPT);
menuInfo.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
menuInfo.fType = MFT_STRING;
menuInfo.wID = IDC_ENCRYPT_PGP;
menuInfo.dwTypeData = szMenu;
if (plugin->bEncrypt)
menuInfo.fState = MFS_ENABLED | MFS_CHECKED;
else
menuInfo.fState = MFS_ENABLED;
InsertMenuItem((HMENU) wParam, OE5_ENCRYPT_PGP_POS, TRUE,
&menuInfo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -