📄 unknownwndproc.cpp
字号:
/*____________________________________________________________________________
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 + -