static char *passphrase;
static char *passphrase = NULL;
static int CALLBACK PassphraseProc(HWND hwnd, UINT msg,                                   WPARAM wParam, LPARAM lParam) {    static char *passphrase;    struct PassphraseProcStruct *p;    switch (msg) {      case WM_INITDIALOG:	/*	 * Centre the window.	 */	{			       /* centre the window */	    RECT rs, rd;	    HWND hw;	    hw = GetDesktopWindow();	    if (GetWindowRect (hw, &rs) && GetWindowRect (hwnd, &rd))		MoveWindow (hwnd, (rs.right + rs.left + rd.left - rd.right)/2,			    (rs.bottom + rs.top + rd.top - rd.bottom)/2,			    rd.right-rd.left, rd.bottom-rd.top, TRUE);	}        SetForegroundWindow(hwnd);        SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,                      SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);        p = (struct PassphraseProcStruct *)lParam;        passphrase = p->passphrase;        if (p->comment)            SetDlgItemText(hwnd, 101, p->comment);        *passphrase = 0;        return 0;      case WM_COMMAND:	switch (LOWORD(wParam)) {	  case IDOK:	    if (*passphrase)		EndDialog (hwnd, 1);	    else		MessageBeep (0);	    return 0;	  case IDCANCEL:	    EndDialog (hwnd, 0);	    return 0;          case 102:                    /* edit box */	    if (HIWORD(wParam) == EN_CHANGE) {                GetDlgItemText (hwnd, 102, passphrase, PASSPHRASE_MAXLEN-1);                passphrase[PASSPHRASE_MAXLEN-1] = '\0';            }            return 0;	}	return 0;      case WM_CLOSE:	EndDialog (hwnd, 0);	return 0;    }    return 0;}