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

📄 unknownwndproc.cpp

📁 vc环境下的pgp源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		tbb[2].dwData = 0;
		tbb[2].iString = nSignSTR;
		
		plugin->bEncrypt = ByDefaultEncrypt(plugin->memoryMgr);
		plugin->bSign = ByDefaultSign(plugin->memoryMgr);
		
		SetTimer(hDlg, PASTE_REPLY_TIMER, 250, 0);
	}
	else
	{
		int nDecryptBMP;
		HBITMAP hbmpDecrypt;
		int nDecryptSTR = -1;
			
		if (!(plugin->bOE5))
		{
			UIGetString(szText, 254, IDS_MENU_DECRYPT);
			AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_DECRYPT, szText);
		
			AppendMenu(plugin->hPGPMenu, MF_SEPARATOR, NULL, NULL);
		}
		
		if (plugin->bOE5)
		{
			if (iNumBits <= 8)
				hbmpDecrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_DECRYPTOFF4));
			else
				hbmpDecrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_DECRYPTOFF));

		}
		else
			hbmpDecrypt = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_DECRYPT));

		nDecryptBMP = ImageList_AddMasked(hilToolbar, hbmpDecrypt, 
						TRANSPARENT_COLOR);
		DeleteObject(hbmpDecrypt);
		plugin->nDecryptImage = nDecryptBMP;
		
		if (plugin->bOE5)
		{
			if (iNumBits <= 8)
				hbmpDecrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_DECRYPTLARGE4));
			else
				hbmpDecrypt = LoadBitmap(hInst, 
								MAKEINTRESOURCE(IDB_DECRYPTLARGE));

			ImageList_AddMasked(hilHotToolbar, hbmpDecrypt, 
				TRANSPARENT_COLOR);
			DeleteObject(hbmpDecrypt);

			UIGetString(szText, 254, IDS_TOOLTIP_DECRYPT);
			nDecryptSTR = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
							(LPARAM) szText);
			plugin->nDecryptString = nDecryptSTR;
		}

		tbb[1].iBitmap = nDecryptBMP;
		tbb[1].idCommand = IDC_DECRYPT;
		tbb[1].fsState = TBSTATE_ENABLED;
		tbb[1].fsStyle = TBSTYLE_BUTTON;
		tbb[1].dwData = 0;
		tbb[1].iString = nDecryptSTR;
		
		tbb[2].iBitmap = -1;
		tbb[2].idCommand = -1;
		tbb[2].fsState = TBSTATE_HIDDEN;
		tbb[2].fsStyle = TBSTYLE_SEP;
		tbb[2].dwData = 0;
		tbb[2].iString = -1;
		
		if (AutoDecrypt(plugin->memoryMgr))
			SetTimer(hDlg, AUTO_DECRYPT_TIMER, 500, 0);
	}
	
	UIGetString(szText, 254, IDS_MENU_PREFS);
	AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PREFS, szText);
	
	UIGetString(szText, 254, IDS_MENU_PGPKEYS);
	AppendMenu(plugin->hPGPMenu, MF_STRING, IDC_PGPKEYS, szText);
	
	if (plugin->bOE5)
	{
		if (iNumBits <= 8) 
			hbmpPGPkeys = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_PGPKEYSOFF4));
		else
			hbmpPGPkeys = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_PGPKEYSOFF));
	}
	else
	{
		DrawMenuBar(hDlg);
		hbmpPGPkeys = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_PGPKEYS));
	}
	
	nPGPkeysBMP = ImageList_AddMasked(hilToolbar, hbmpPGPkeys, 
					TRANSPARENT_COLOR);
	DeleteObject(hbmpPGPkeys);
	plugin->nPGPKeysImage = nPGPkeysBMP;
	
	SendMessage(plugin->hToolbar, TB_SETIMAGELIST, 0, (LPARAM) hilToolbar);

	if (plugin->bOE5)
	{
		if (iNumBits <= 8)
			hbmpPGPkeys = LoadBitmap(hInst, 
							MAKEINTRESOURCE(IDB_PGPKEYSLARGE4));
		else
			hbmpPGPkeys = LoadBitmap(hInst, 
							MAKEINTRESOURCE(IDB_PGPKEYSLARGE));

		ImageList_AddMasked(hilHotToolbar, hbmpPGPkeys, TRANSPARENT_COLOR);
		DeleteObject(hbmpPGPkeys);

		UIGetString(szText, 254, IDS_TOOLTIP_PGPKEYS);
		nPGPkeysSTR = SendMessage(plugin->hToolbar, TB_ADDSTRING, 0,
						(LPARAM) szText);
		plugin->nPGPKeysString = nPGPkeysSTR;
	}
	
	tbb[0].iBitmap = -1;
	tbb[0].idCommand = -1;
	tbb[0].fsState = TBSTATE_ENABLED;
	tbb[0].fsStyle = TBSTYLE_SEP;
	tbb[0].dwData = 0;
	tbb[0].iString = -1;
	
	tbb[3].iBitmap = nPGPkeysBMP;
	tbb[3].idCommand = IDC_PGPKEYS;
	tbb[3].fsState = TBSTATE_ENABLED;
	tbb[3].fsStyle = TBSTYLE_BUTTON;
	tbb[3].dwData = 0;
	tbb[3].iString = nPGPkeysSTR;
	
	SendMessage(plugin->hToolbar, TB_ADDBUTTONS, 4, (LPARAM) &tbb);

	if (plugin->bOE5)
	{
		int nIndex;
		TBBUTTON tb;

		if (bSend)
			nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
						IDC_ENCRYPT_PGP, 0);
		else
			nIndex = SendMessage(plugin->hToolbar, TB_COMMANDTOINDEX,
						IDC_DECRYPT, 0);

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

		if (tb.fsStyle & TBSTYLE_SEP)
			SendMessage(plugin->hToolbar, TB_DELETEBUTTON, nIndex - 2, 0);

		if (nY > 26)
		{
			SendMessage(plugin->hToolbar, TB_SETBUTTONSIZE, 0, 
				MAKELONG(nX, nY));
			plugin->nButtonSizeX = nX;
			plugin->nButtonSizeY = nY;
		}

		if (GetProp(plugin->hToolbar, "oldproc") == NULL)
		{
			// Save away toolbar parent window proc
			SetProp(plugin->hToolbar, "oldproc", 
				(HANDLE) GetWindowLong(plugin->hToolbar, GWL_WNDPROC)); 

			// Save plugin pointer
			SetProp(plugin->hToolbar, PLUGIN_INFO_PROP, (HANDLE) plugin);

			// Subclass toolbar window
			SetWindowLong(plugin->hToolbar, GWL_WNDPROC, 
				(DWORD) ToolbarWndProc);
		}

		if (GetProp(hReBar, "oldproc") == NULL)
		{
			// Save away toolbar parent window proc
			SetProp(hReBar, "oldproc", 
				(HANDLE) GetWindowLong(hReBar, GWL_WNDPROC)); 

			// Save plugin pointer
			SetProp(hReBar, PLUGIN_INFO_PROP, (HANDLE) plugin);

			// Subclass toolbar parent window
			if (bSend)
				SetWindowLong(hReBar, GWL_WNDPROC, 
					(DWORD) SendToolbarParentWndProc);
			else
				SetWindowLong(hReBar, GWL_WNDPROC, 
					(DWORD) ReadToolbarParentWndProc);
		}
	}
	
	if (bSend && !(plugin->bOE5))
		SetTimer(hDlg, CORRECT_TOOLBAR_TIMER, 250, 0);

	return;
}


static LRESULT CALLBACK ToolbarWndProc(HWND hDlg, 
									   UINT msg,
									   WPARAM wParam, 
									   LPARAM lParam)
{
	WNDPROC lpOldProc;
	PluginInfo *plugin;
	UINT nState;
	UINT nOldState;
	LRESULT lResult;
	BOOL bSend;

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

	if ((msg == WM_USER+59) && (lParam == 0x00460000) && 
		(plugin->nButtonSizeX > 0) && (plugin->nButtonSizeY > 0))
	{
		DWORD dwSize;
		INT nX;
		INT nY;
		
		dwSize = SendMessage(hDlg, TB_GETBUTTONSIZE, 0, 0);
		nX = LOWORD(dwSize);
		nY = HIWORD(dwSize);
		
		if (!dwSize)
			return CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);

		if ((nX != plugin->nButtonSizeX) || 
			(nY != plugin->nButtonSizeY))
		{
			lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);

			SendMessage(hDlg, TB_SETBUTTONSIZE, 0, 
				MAKELONG(plugin->nButtonSizeX, plugin->nButtonSizeY));

			return lResult;
		}
	}

	lResult = CallWindowProc(lpOldProc, hDlg, msg, wParam, lParam);

	nState = CallWindowProc(lpOldProc, hDlg, TB_GETSTATE, IDC_PGPKEYS, 0);
	if (!(nState & TBSTATE_ENABLED))
	{
		nState |= TBSTATE_ENABLED;
		CallWindowProc(lpOldProc, hDlg, TB_SETSTATE, IDC_PGPKEYS,
			MAKELONG(nState, 0));
	}

	if (bSend)
	{
		nState = CallWindowProc(lpOldProc, hDlg, TB_GETSTATE, IDC_SIGN_PGP, 
					0);
		nOldState = nState;

		if (!(nState & TBSTATE_ENABLED))
			nState |= TBSTATE_ENABLED;

		if (plugin->bSign)
		{
			if (!(nState & TBSTATE_CHECKED))
				nState |= TBSTATE_CHECKED;
		}
		else
		{
			if (nState & TBSTATE_CHECKED)
				nState ^= TBSTATE_CHECKED;
		}

		if (nState != nOldState)
		{
			CallWindowProc(lpOldProc, hDlg, TB_SETSTATE, IDC_SIGN_PGP,
				MAKELONG(nState, 0));
		}

		nState = CallWindowProc(lpOldProc, hDlg, TB_GETSTATE, IDC_ENCRYPT_PGP, 
					0);
		nOldState = nState;

		if (!(nState & TBSTATE_ENABLED))
			nState |= TBSTATE_ENABLED;

		if (plugin->bEncrypt)
		{
			if (!(nState & TBSTATE_CHECKED))
				nState |= TBSTATE_CHECKED;
		}
		else
		{
			if (nState & TBSTATE_CHECKED)
				nState ^= TBSTATE_CHECKED;
		}

		if (nState != nOldState)
		{
			CallWindowProc(lpOldProc, hDlg, TB_SETSTATE, IDC_ENCRYPT_PGP,
				MAKELONG(nState, 0));
		}
	}
	else
	{
		TBBUTTON tb;

		nState = CallWindowProc(lpOldProc, hDlg, TB_GETSTATE, IDC_DECRYPT, 0);
		if (!(nState & TBSTATE_ENABLED))
		{
			nState |= TBSTATE_ENABLED;
			CallWindowProc(lpOldProc, hDlg, TB_SETSTATE, IDC_DECRYPT,
				MAKELONG(nState, 0));
		}

		nState = CallWindowProc(lpOldProc, hDlg, TB_COMMANDTOINDEX,
					IDC_DECRYPT, 0);

		CallWindowProc(lpOldProc, hDlg, TB_GETBUTTON, nState - 2, 
			(LPARAM) &tb);

		if (tb.fsStyle & TBSTYLE_SEP)
			CallWindowProc(lpOldProc, hDlg, TB_DELETEBUTTON, nState - 2, 0);
	}

	return lResult;
}


/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

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