zoukankan      html  css  js  c++  java
  • 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); 
    }
    

      

  • 相关阅读:
    Sqlserver查询表结构信息-字段说明、类型、长度等信息
    SurfaceView和GLSurfaceView
    OpenGL ES绘制一个图形
    第一章 介绍opengles
    opengles 系列 说明
    Box2d
    Opengles
    SoundPool播放多个文件,无法正常播放的问题
    LetCode刷题
    Open GL ES英文书籍机器翻译--第一章 介绍OpenGl es2.0
  • 原文地址:https://www.cnblogs.com/eternalmoonbeam/p/13111648.html
Copyright © 2011-2022 走看看