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

📄 gmnewgrp.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
字号:
/*____________________________________________________________________________
	Copyright (C) 2002 PGP Corporation
	All rights reserved.
	
	GMNewGrp.c - create new recipient group	

	$Id: GMNewGrp.c,v 1.7 2002/10/29 17:44:44 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"

// project header files
#include "PGPgmx.h"
#include "UTF8Edit.h"

// typedefs 
typedef struct {
	PGROUPMAN		pGM;
	PGPGroupSetRef	groupset;
	PGPGroupID		groupid;
	BOOL			bNewGroup;
	CHAR			szGroupName[kPGPMaxGroupNameLength];
	CHAR			szGroupDesc[kPGPMaxGroupDescriptionLength];
} NEWGROUPSTRUCT;

// external globals
extern HINSTANCE g_hinst;

// local globals
static DWORD aIds[] = {			// Help IDs
	IDC_NEWGROUPNAME,	IDH_PGPPKGRP_GROUPNAME, 
	IDC_NEWGROUPDESC,	IDH_PGPPKGRP_GROUPDESC,
    0,0 
}; 


//	___________________________________________________
//
//  Dialog Message procedure
//	When user asks to add a userID to a key, a dialog 
//	appears asking for the new userID to be typed in.
//	This is the message processing procedure for that
//	dialog.

static BOOL CALLBACK 
sNewGroupDlgProc (
		HWND	hDlg, 
		UINT	uMsg, 
		WPARAM	wParam,
		LPARAM	lParam) 
{

	NEWGROUPSTRUCT* pngs;
	PGPError		err;

	switch(uMsg) {

	case WM_INITDIALOG:
		pngs = (NEWGROUPSTRUCT*)lParam;
		SetWindowLong (hDlg, GWL_USERDATA, lParam);
		UTF8EditInit (GetDlgItem (hDlg, IDC_NEWGROUPNAME));
		SendMessage (UTF8EditGetHandle (GetDlgItem (hDlg, IDC_NEWGROUPNAME)), 
				EM_SETLIMITTEXT, kPGPMaxGroupNameLength, 0);
		UTF8EditInit (GetDlgItem (hDlg, IDC_NEWGROUPDESC));
		SendMessage (UTF8EditGetHandle (GetDlgItem (hDlg, IDC_NEWGROUPDESC)), 
				EM_SETLIMITTEXT, kPGPMaxGroupDescriptionLength, 0);
		if (!pngs->bNewGroup) 
		{
			CHAR szTitle[64];
			LoadString (g_hinst, IDS_GROUPPROPS, szTitle, sizeof(szTitle));
			SetWindowText (hDlg, szTitle);
			UTF8EditSetText (
					GetDlgItem (hDlg, IDC_NEWGROUPNAME), pngs->szGroupName);
			UTF8EditSetText (
					GetDlgItem (hDlg, IDC_NEWGROUPDESC), pngs->szGroupDesc);
		}
		return TRUE;

	case WM_HELP :
	case WM_CONTEXTMENU :
		return PGPclHtmlHelp (hDlg, uMsg, wParam, lParam, 
				(char*)kPGPclHelpFile, aIds);

	case WM_DESTROY :
		UTF8EditDestroy (GetDlgItem (hDlg, IDC_NEWGROUPNAME));
		UTF8EditDestroy (GetDlgItem (hDlg, IDC_NEWGROUPDESC));
		return 0;

	case WM_COMMAND:
		switch(LOWORD (wParam)) {
		case IDOK: 
			pngs = (NEWGROUPSTRUCT*)GetWindowLong (hDlg, GWL_USERDATA);
			if (!UTF8EditGetText (
				GetDlgItem (hDlg, IDC_NEWGROUPNAME), 
				pngs->szGroupName, sizeof (pngs->szGroupName))) 
			{
				PGPgmMessageBox (hDlg, IDS_CAPTIONINFO, 
						IDS_NEEDGROUPNAME, MB_OK|MB_ICONINFORMATION);
				return TRUE;
			}

			UTF8EditGetText (
					GetDlgItem (hDlg, IDC_NEWGROUPDESC), 
					pngs->szGroupDesc, sizeof (pngs->szGroupDesc));

			if (pngs->bNewGroup)
			{
				err = PGPNewGroup (pngs->pGM->groupsetMain, 
					pngs->szGroupName, pngs->szGroupDesc, &(pngs->groupid));
			}
			else 
			{
				err = PGPSetGroupName (pngs->pGM->groupsetMain, 
						pngs->groupid, pngs->szGroupName);
				if (IsntPGPError (err)) 
				{
					err = PGPSetGroupDescription (pngs->pGM->groupsetMain, 
							pngs->groupid, pngs->szGroupDesc);
				}
			}

			if (IsPGPError (err)) 
			{
				PGPclErrorBox (NULL, err);
				EndDialog (hDlg, 0);
				return TRUE;
			}

			EndDialog (hDlg, 1);
			return TRUE;

		case IDCANCEL:
			EndDialog (hDlg, 0);
			return TRUE;
		}
		return TRUE;
	}
	return FALSE;
}

//	___________________________________________________
//
//  Update recipient group
//	This routine is called when the user chooses to edit
//	recipient group properties

BOOL 
GMGroupProperties (PGROUPMAN pGM)
{
	BOOL			bRetVal			= FALSE;
	PGPGroupItem	groupitem;
	PGPGroupInfo	groupinfo;
	PGPUInt32		iIndex;
	TL_TREEITEM		tli;
	NEWGROUPSTRUCT	ngs;

	// initialize struct
	ngs.pGM = pGM;
	ngs.bNewGroup = FALSE;

	tli.hItem = GMFocusedItem (pGM);
	tli.mask = TLIF_IMAGE|TLIF_PARAM;
	TreeList_GetItem (pGM->hwndTree, &tli);

	// if selected item is a key, get its parent
	if (tli.iImage != IDX_GROUP) 
	{
		tli.hItem = GMFocusedItem (pGM);
		tli.mask = TLIF_PARENTHANDLE;
		TreeList_GetItem (pGM->hwndTree, &tli);

		tli.mask = TLIF_IMAGE|TLIF_PARAM;
		TreeList_GetItem (pGM->hwndTree, &tli);
	}

	// if selected item is a group then get the groupid
	if (tli.iImage == IDX_GROUP) 
	{
		ngs.groupid = HIWORD(tli.lParam);
		if (ngs.groupid) 
		{
			iIndex = LOWORD(tli.lParam);
			PGPGetIndGroupItem (pGM->groupsetMain, 
					ngs.groupid, iIndex, &groupitem);
			ngs.groupid = groupitem.u.groupID; 
		}
		else 
			ngs.groupid = LOWORD(tli.lParam);

		PGPGetGroupInfo (pGM->groupsetMain, ngs.groupid, &groupinfo);
		lstrcpy (ngs.szGroupName, groupinfo.name);
		lstrcpy (ngs.szGroupDesc, groupinfo.description);

		// get new info from user
		if (DialogBoxParam (g_hinst, MAKEINTRESOURCE (IDD_NEWGROUP), 
				pGM->hwndParent, sNewGroupDlgProc, (LPARAM)&ngs)) 
		{
			GMSortGroupSet (pGM);
			GMCommitGroupChanges (pGM, TRUE);
			PGPgmLoadGroups ((HGROUPMAN)pGM);
			InvalidateRect (pGM->hwndTree, NULL, FALSE);
			UpdateWindow (pGM->hwndTree);
			bRetVal = TRUE;			
		}
	}

	return bRetVal;
}

//	___________________________________________________
//
//  Create new recipient group
//	This routine is called when the user chooses to create
//	a new recipient group

PGPError PGPgmExport
PGPgmNewGroup (HGROUPMAN hGroupMan) 
{
	PGROUPMAN		pGM				= (PGROUPMAN)hGroupMan;
	BOOL			bRetVal			= FALSE;
	NEWGROUPSTRUCT	ngs;

	// initialize struct
	ngs.pGM = pGM;
	ngs.bNewGroup = TRUE;

	// get new group info from user
	if (DialogBoxParam (g_hinst, MAKEINTRESOURCE (IDD_NEWGROUP), 
			pGM->hwndParent, sNewGroupDlgProc, (LPARAM)&ngs)) 
	{
		GMCommitGroupChanges (pGM, TRUE);

		TreeList_DeleteTree (pGM->hwndTree, FALSE);
		InvalidateRect (pGM->hwndTree, NULL, TRUE);
		UpdateWindow (pGM->hwndTree);
		GMSortGroupSet (pGM);
		GMLoadGroupsIntoTree (pGM, TRUE, FALSE, FALSE);
		InvalidateRect (pGM->hwndTree, NULL, TRUE);

		UpdateWindow (pGM->hwndTree);
		bRetVal = TRUE;			
	}

	return bRetVal;
}

⌨️ 快捷键说明

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