Met behulp van besturingselementen voor één regel bewerken

In het voorbeeld in deze sectie laat zien hoe u een venster procedure te produceren een dialoogvenster waarin de gebruiker om een wachtwoord wordt gevraagd.

Het besturingselement voor één regel bewerken in het dialoogvenster wachtwoord heeft de ES_PASSWORD stijl. Standaard besturingselementen bewerken met deze weergave in de stijl een sterretje voor elk teken dat de gebruiker typt. In dit voorbeeld, wordt echter het EM_SETPASSWORDCHAR bericht te wijzigen van de standaard teken van een sterretje naar een plusteken (+).

Deze procedure venster verandert de drukknop standaard van annuleren OK zodra de gebruiker tekst in het besturingselement voor bewerking invoert. Als de gebruiker op de knop OK, de venster procedure de berichten voor EM_LINELENGTH en EM_GETLINE wordt gebruikt voor het ophalen van de tekst.

LRESULT CALLBACK PassProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 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); 
} 
 

Index