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

📄 rdproc.c

📁 PGP—Pretty Good Privacy
💻 C
📖 第 1 页 / 共 2 页
字号:
/*____________________________________________________________________________
	Copyright (C) 1997 Network Associates Inc. and affiliated companies.
	All rights reserved.

	$Id: RDproc.c,v 1.30 1999/03/10 03:01:29 heller Exp $
____________________________________________________________________________*/

#include "RDprecmp.h"


/*
 * RecProc.c  Main message loop for the recipient dialog
 *
 * This message loops handles all the operations of the recipient
 * dialog, except those that are done in the listview subclass.
 *
 * Copyright (C) 1996 Network Associates Inc. and affiliated companies.
 * All rights reserved.
 */


// Used for WinHelp
static DWORD aIds[] = {            // Help IDs
IDC_RECIPIENT_LIST,IDH_IDC_RECIPIENT_LIST,
IDC_USER_ID_LIST,IDH_IDC_USER_ID_LIST,
801,IDH_TEXTOUTPUT, // Hardcoded in ClientLib
802,IDH_CONVENCRYPTION, // Hardcoded in ClientLib
803,IDH_WIPEORIGINAL, // Hardcoded in ClientLib
805,IDH_FYEO, // Hardcoded in ClientLib
806,IDH_SDA, // Hardcoded in ClientLib
0,0 
};

static float ColRatio[NUMCOLUMNS]={0.65F,0.11F,0.18F};
static char *RecColText[NUMCOLUMNS]={"Recipients","Validity","Size"};
static char *UserColText[NUMCOLUMNS]=
               {"Drag users from this list to the Recipients list",
                "Validity","Size"};

// Used for header controls of the listviews

// Used to calculate the placement of GUIs due to a resizing
#define DLGMARGIN 2
#define BUTTONWIDTH 75
#define BUTTONHEIGHT 25
#define DIVIDEMARGIN 3
#define BUTTONSPACE 10
#define MINDLGX 350
#define MINDLGY 350

int ResizeEm(HWND hdlg)
{
    RECT dlgRect,recipRect,userRect;
    RECT listareaRect,buttonareaRect,optRect;
    int divider;
	int topmsg,bottommsg;
	PRECGBL prg;
	int ButtOptArea;

	prg=(PRECGBL)(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

	ButtOptArea=115; // The height for buttons and options

    GetClientRect(hdlg, &dlgRect);

    dlgRect.top+=DLGMARGIN;
    dlgRect.bottom-=DLGMARGIN;
    dlgRect.left+=DLGMARGIN;
    dlgRect.right-=DLGMARGIN;

    CopyRect(&listareaRect,&dlgRect);
    CopyRect(&buttonareaRect,&dlgRect);

    listareaRect.bottom=dlgRect.bottom-ButtOptArea-DIVIDEMARGIN;
    buttonareaRect.top=dlgRect.bottom-ButtOptArea+DIVIDEMARGIN;

    divider=(int)((float)listareaRect.bottom*(float)0.67);
	topmsg=divider;
	bottommsg=divider;

    CopyRect(&recipRect,&listareaRect);
    CopyRect(&userRect,&listareaRect);

	if(prg->AddUserRetVal>=ADDUSER_KEYSNOTVALID)
	{
		topmsg=divider-20;
		bottommsg=divider+20;

		MoveWindow(GetDlgItem(hdlg, IDC_MSGTXTBORDER),
		    userRect.left,topmsg+DIVIDEMARGIN,
			userRect.right-userRect.left,40-DIVIDEMARGIN*2,TRUE);

		ShowWindow(GetDlgItem(hdlg, IDC_MSGTXT),SW_SHOW);
	
		MoveWindow(GetDlgItem(hdlg, IDC_MSGTXT),
			userRect.left+4,topmsg+DIVIDEMARGIN+4,
			userRect.right-userRect.left-8,40-DIVIDEMARGIN*2-8,TRUE);

		ShowWindow(GetDlgItem(hdlg, IDC_MSGTXTBORDER),SW_SHOW);
	}
	else
	{
		ShowWindow(GetDlgItem(hdlg, IDC_MSGTXT),SW_HIDE);
		ShowWindow(GetDlgItem(hdlg, IDC_MSGTXTBORDER),SW_HIDE);
	}

	userRect.bottom=topmsg-DIVIDEMARGIN;
    recipRect.top=bottommsg+DIVIDEMARGIN;

    CopyRect(&optRect,&buttonareaRect);
    buttonareaRect.left=buttonareaRect.right-3*BUTTONWIDTH-
        2*BUTTONSPACE;
    optRect.right=buttonareaRect.left-BUTTONSPACE;

	MoveList(&(prg->lsRec),&recipRect);
	MoveList(&(prg->lsUser),&userRect);

    MoveWindow(GetDlgItem(hdlg, IDOK),
        buttonareaRect.left,buttonareaRect.top,
        BUTTONWIDTH,BUTTONHEIGHT,TRUE);
        
    MoveWindow(GetDlgItem(hdlg, IDCANCEL),
        buttonareaRect.left+BUTTONWIDTH+BUTTONSPACE,
        buttonareaRect.top,
        BUTTONWIDTH,BUTTONHEIGHT,TRUE);

    MoveWindow(GetDlgItem(hdlg, IDHELP),
        buttonareaRect.left+2*BUTTONWIDTH+2*BUTTONSPACE,
        buttonareaRect.top,
        BUTTONWIDTH,BUTTONHEIGHT,TRUE);

    InvalidateRect(hdlg,NULL,TRUE);

	if(prg->hwndOptions==NULL)
	{
		prg->hwndOptions=CreateOptionsControl(hdlg,
			prg->mDialogOptions,
			optRect.left,optRect.top,
			optRect.right-optRect.left,
			optRect.bottom-optRect.top); 
	}
	else
	{
		ResizeOptionsControl(prg->hwndOptions,
			optRect.left,optRect.top,
			optRect.right-optRect.left,
			optRect.bottom-optRect.top);
	}

    return TRUE;
}

BOOL WINAPI RecipientDlgProc(HWND hdlg, UINT uMsg, 
                             WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        case WM_INITDIALOG:
        { 
            RECT rc;
			char MsgTxt[256];
			DRAWSTRUCT *ds;
			PRECGBL prg;

			InitCommonControls();

			// need to save away the pointer to our structure...
			SetWindowLong(hdlg,GWL_USERDATA,(long)lParam);

			prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

			prg->hwndRecDlg=hdlg;

			ds=&(prg->ds);
            
			CreateDrawElements(prg->context,ds);
			ds->DisplayMarginal=prg->mDisplayMarginalValidity;
			ds->MarginalInvalid=prg->mIgnoreMarginalValidity;

			InitList(hdlg,IDC_USER_ID_LIST,
				&(prg->lsUser),
				UserColText,
				ColRatio);
			InitList(hdlg,IDC_RECIPIENT_LIST,
				&(prg->lsRec),
				RecColText,
				ColRatio);

			prg->hwndUserIDs = prg->lsUser.hwndlist;
            prg->hwndRecipients = prg->lsRec.hwndlist;
      
            origListBoxProc=
                SubclassWindow(prg->hwndUserIDs,
                               MyListviewWndProc);  
            origListBoxProc=
                SubclassWindow(prg->hwndRecipients,
                               MyListviewWndProc);  
        
            if(prg->mWindowTitle)
            {
                SetWindowText(hdlg, prg->mWindowTitle);
            }
            // else they did not provide a title so keep default

			// Put necessary warning message up
			strcpy(MsgTxt,"");

			if((prg->AddUserRetVal)&ADDUSER_KEYSNOTCORPSIGNED)
				LoadString(gPGPsdkUILibInst, IDS_KEYSNOTCORPSIGNED, 
						MsgTxt, sizeof(MsgTxt));
			if((prg->AddUserRetVal)&ADDUSER_ADKMISSING)
				LoadString(gPGPsdkUILibInst, IDS_ADKMISSING, 
						MsgTxt, sizeof(MsgTxt));
			else if((prg->AddUserRetVal)&ADDUSER_KEYSNOTVALID)
				LoadString(gPGPsdkUILibInst, IDS_KEYSNOTVALID, 
						MsgTxt, sizeof(MsgTxt));
			else if((prg->AddUserRetVal)&ADDUSER_KEYSNOTFOUND)
				LoadString(gPGPsdkUILibInst, IDS_KEYSNOTFOUND, 
						MsgTxt, sizeof(MsgTxt));
			else if((prg->AddUserRetVal)&ADDUSER_MULTIPLEMATCH)
				LoadString(gPGPsdkUILibInst, IDS_MULTIPLEMATCH, 
						MsgTxt, sizeof(MsgTxt));
	
			SetWindowText(GetDlgItem(hdlg, IDC_MSGTXT),MsgTxt);

            prg->RSortAscending=TRUE;
            prg->RSortSub=0;
            prg->USortAscending=TRUE;
            prg->USortSub=0;
 
			BuildTables(prg);

            ResizeEm(hdlg);

			GetWindowRect (hdlg, &rc);
            SetWindowPos (hdlg, NULL,
                (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2,
                (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2,
                0, 0, SWP_NOSIZE | SWP_NOZORDER);

			 // Go to keyserver for not founds
            if(prg->mSearchBeforeDisplay)   
            {
				PGPError err;

                ShowWindow(hdlg,SW_SHOW);
                SetForegroundWindow(hdlg);
                err=LookUpUnknownKeys(hdlg,prg);
			}
			else
				SetForegroundWindow(hdlg);

			SetFocus(prg->hwndUserIDs);
            return FALSE;
        }

		case WM_CLOSE:
        case WM_QUIT:
        case WM_DESTROY:
        {
			PRECGBL prg;

			prg=(PRECGBL)GetWindowLong(hdlg,GWL_USERDATA);

            DeleteDrawElements(&(prg->ds));
    
            SubclassWindow(prg->hwndRecipients,origListBoxProc);
            SubclassWindow(prg->hwndUserIDs,origListBoxProc);
			EndDialog(hdlg, FALSE);
            break;
        }

		case WM_GETMINMAXINFO:
		{
			MINMAXINFO* lpmmi;

		    lpmmi = (MINMAXINFO*) lParam;
    		lpmmi->ptMinTrackSize.x = MINDLGX;
    		lpmmi->ptMinTrackSize.y = MINDLGY;
            break;
		}

#if LISTBOX

⌨️ 快捷键说明

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