Using Single-Line Edit Controls
The example in this section demonstrates how to use a window procedure to
produce a dialog box that prompts the user to enter a password.
The single-line edit control in the Password dialog box has the ES_PASSWORD
style. By default, edit controls with this style display an asterisk for each
character the user types. This example, however, uses the
EM_SETPASSWORDCHAR message to change the default character from an asterisk to a plus sign (+).
This window procedure changes the default push button from Cancel to OK as
soon as the user enters text in the edit control. If the user presses the OK
button, the window procedure uses the
EM_LINELENGTH and
EM_GETLINE messages to retrieve the text.
LRESULT CALLBACK PassProc(hDlg, message, wParam, lParam)
HWND hDlg; /* window handle of the dialog box */
UINT message; /* type of message */
UINT wParam; /* message-specific information */
LONG lParam;
{
CHAR lpszPassword[16];
WORD cchPassword;
switch (message) {
case WM_INITDIALOG:
/* Set password character to a plus sign (+) */
SendDlgItemMessage(hDlg,
IDE_PASSWORDEDIT,
EM_SETPASSWORDCHAR,
(WPARAM) '+',
(LPARAM) 0);
/* Set the default push button to "Cancel." */
SendMessage(hDlg,
DM_SETDEFID,
(WPARAM) IDCANCEL,
(LPARAM) 0);
return TRUE;
case WM_COMMAND:
/*
* Set the default push button to "OK" when the user
* enters text.
*/
if(HIWORD (wParam) == EN_CHANGE &&
LOWORD(wParam) == IDE_PASSWORDEDIT)
SendMessage(hDlg,
DM_SETDEFID,
(WPARAM) IDOK,
(LPARAM) 0);
switch(wParam) {
case IDOK:
/* Get number of characters. */
cchPassword = (WORD) SendDlgItemMessage(hDlg,
IDE_PASSWORDEDIT,
EM_LINELENGTH,
(WPARAM) 0,
(LPARAM) 0);
if (cchPassword >= 16) {
MessageBox(hDlg,
"Too many characters.",
"Error",
MB_OK);
EndDialog(hDlg, TRUE);
return FALSE;
}
else if (cchPassword == 0) {
MessageBox(hDlg,
"No characters entered.",
"Error",
MB_OK);
EndDialog(hDlg, TRUE);
return FALSE;
}
/*
* Put the number of characters into first word
* of buffer.
*/
*((LPWORD)lpszPassword) = cchPassword;
/* Get the characters. */
SendDlgItemMessage(hDlg,
IDE_PASSWORDEDIT,
EM_GETLINE,
(WPARAM) 0, /* line 0 */
(LPARAM) lpszPassword);
/* Null-terminate the string. */
lpszPassword[cchPassword] = 0;
MessageBox(hDlg,
lpszPassword,
"Did it work?",
MB_OK);
/* Call a local password-parsing function. */
ParsePassword(lpszPassword);
EndDialog(hDlg, TRUE);
return TRUE;
case IDCANCEL:
EndDialog(hDlg, TRUE);
return TRUE;
}
return 0;
}
return FALSE;
UNREFERENCED_PARAMETER(lParam);
}
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database