windows程序单行文本编辑框的添加

编程

 

 

单行编辑控件具有ES_密码样式。默认情况下,具有此样式的编辑控件为用户键入的每个字符显示一个星号。

但是,本例使用EM_SETPASSWORDCHAR消息将默认字符从星号更改为加号(+)。以下屏幕截图显示用户输入密码后的对话框。


步骤1:创建密码对话框的实例。

下面的C++代码示例使用DealBox函数创建一个模态对话框。对话框模板IDD_PASSWORD作为参数传递。它定义了“密码”对话框的窗口样式、按钮和尺寸。

DialogBox(hInst,                   // application instance

MAKEINTRESOURCE(IDD_PASSWORD), // dialog box resource

hWnd, // owner window

PasswordProc // dialog box window procedure

);

步骤2:初始化对话框并处理用户输入。

以下示例中的窗口过程初始化“密码”对话框并处理通知消息和用户输入。初始化期间,窗口过程将默认密码字符更改为+号,并将默认按钮设置为取消。

在用户输入处理期间,只要用户在编辑控件中输入文本,窗口过程就会将默认按钮从“取消”更改为“确定”。

如果用户按下“确定”按钮,窗口过程将使用EM_LINELENGTH_和EM_GETLINE消息来检索文本。

INT_PTR CALLBACK PasswordProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 

{

TCHAR 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,

L"Too many characters.",

L"Error",

MB_OK);

EndDialog(hDlg, TRUE);

return FALSE;

}

else if (cchPassword == 0)

{

MessageBox(hDlg,

L"No characters entered.",

L"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,

L"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);

}

  

 

原文链接:https://www.cnblogs.com/eternalmoonbeam/archive/2020/06/13/13111648.html

以上是 windows程序单行文本编辑框的添加 的全部内容, 来源链接: utcz.com/z/517411.html

回到顶部