Article ID: 125606
Article Last Modified on 12/3/2003
CLEAR
CLOSE DATABASES
PASSWORD=SPACE(50) && DEFINE THE PASSWORD TO BE
&& OF 50 ELEMENTS
SET LIBRARY TO SYS(2004)+'FOXTOOLS' && SET THE LIBRARY TO FOXTOOLS
FHANDLE=MAINHWND() && RETURN FOXPRO MAIN SCREEN HANDLE
FUNCHANDLE=REGFN("MyInputBox","LC@CI","I","C:\FPW26\PASSWORD.DLL")
* THE .DLL TITLE IS "PASSWORD DIALOG"
* THE FHANDLE IS THE FOXPRO DESKTOP HANDLE
* THE FUNCHANDLE IS A HANDLE TO THE FUNCTION IN THE .DLL
* THE .DLL RETURNS THE PASSWORD IN THE VARIABLE PASSWORD
=CALLFN(FUNCHANDLE,FHANDLE,"PASSWORD DIALOG",@PASSWORD,50)
PASSWORD=ALLTRIM(PASSWORD) && TRIM PROCEEDING SPACES
RELEASE LIBRARY SYS(2004)+'FOXTOOLS'
#include <windows.h>
#include "mydll.h"
// Data Structures
typedef struct tagXFERBUFFER2
{char *lpszTitle;
LPSTR lpszBuffer;
int *length;
}XFERBUFFER2;
//Prototyping
BOOL FAR PASCAL _export InputBoxDlgProc(HWND hDlg, UINT
message,WPARAM wParam, LPARAM lParam);
int FAR PASCAL _export WEP(int nShutDownFlag);
int FAR PASCAL _export MyInputBox(HWND hWndParent, LPCSTR
lpszTitle,LPSTR Buffer, int StrLen);
HINSTANCE ghInstance;
/*******************************************/
/* THE FOLLOWING FUNCTION (LibMain) IS */
/* NEEDED FOR EVERY .DLL */
/*******************************************/
int FAR PASCAL LibMain(HINSTANCE hInstance, WORD wDataSeg,
WORD wHeapSize, LPSTR lpszCmdLine)
{ghInstance=hInstance;
if (wHeapSize > 0)
UnlockData(0);
ghInstance = hInstance;
return 1;}
/*******************************************/
/* THE FOLLOWING FUNCTION (WEP) IS */
/* NEEDED FOR EVERY .DLL */
/*******************************************/
int FAR PASCAL _export WEP(int nShutDownFlag)
{ return 1;}
/*******************************************/
/* THE FOLLOWING FUNCTION (MyInputBox) IS*/
/* WHAT THE FOXPRO .PRG CALLS*/
/*******************************************/
/*******************************************/
int FAR PASCAL _export MyInputBox(HWND hWndParent,
LPCSTR lpszTitle,LPSTR Buffer, int Length)
{DLGPROC lpfnInputBoxDlgProc;
XFERBUFFER2 XferBuffer;
int Result;
XferBuffer.lpszTitle = (char *) lpszTitle;
XferBuffer.lpszBuffer = (LPSTR) Buffer;
XferBuffer.length = &Length;
lpfnInputBoxDlgProc= (DLGPROC)
MakeProcInstance((FARPROC)InputBoxDlgProc, ghInstance);
Result=DialogBoxParam(ghInstance,"INPUTDIALOG",
hWndParent,lpfnInputBoxDlgProc,(LPARAM)&XferBuffer);
FreeProcInstance((FARPROC)lpfnInputBoxDlgProc);
return Result;}
/*******************************************/
BOOL FAR PASCAL _export InputBoxDlgProc(HWND hDlg,
UINT message,WPARAM wParam, LPARAM lParam)
{static XFERBUFFER2 *XferBuffer;
switch(message)
{case WM_INITDIALOG :
{XferBuffer = (XFERBUFFER2*)lParam;
SetWindowText(hDlg, XferBuffer->lpszTitle);
return TRUE; }
case WM_COMMAND :
{switch(wParam)
{case IDOK :
{int NumChars;
NumChars=GetDlgItemText(hDlg,IDD_EDIT,
(XferBuffer->lpszBuffer+'\0'),
*XferBuffer->length+'\0');
EndDialog(hDlg,NumChars);
break; }
case IDCANCEL :
{ EndDialog(hDlg, 0);
break;}}}}
return FALSE;}
LIBRARY mydll EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD SINGLE HEAPSIZE 1024 EXPORTS MyInputBox
#include <windows.h> #include "mydll.h" INPUTDIALOG DIALOG 20, 24, 180, 64 STYLE WS_POPUP | WS_CAPTION | DS_SETFONT FONT 8, "Helv" BEGIN CONTROL "", IDD_EDIT, "EDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | ES_PASSWORD, 10, 20, 160, 12 DEFPUSHBUTTON "&OK", IDOK, 47, 42, 40, 14 PUSHBUTTON "&Cancel", IDCANCEL, 93, 42, 40, 14 END
#define IDD_EDIT 200
Additional query words: API WinMain
Keywords: kbinfo kbcode KB125606