Freigeben über


Erstellen eines Steuerelements für die Einzelzeilenbearbeitung

In diesem Thema wird veranschaulicht, wie Sie ein Dialogfeld erstellen, das ein einzeiliges Bearbeitungssteuerelement enthält.

Das einzeilige Bearbeitungssteuerelement hat den ES_PASSWORD Stil. Standardmäßig wird beim Bearbeiten von Steuerelementen mit diesem Stil ein Sternchen für jedes Zeichen angezeigt, das vom Benutzer eingegeben wird. In diesem Beispiel wird jedoch die EM_SETPASSWORDCHAR Nachricht verwendet, um das Standardzeichen von einem Sternchen in ein Pluszeichen (+) zu ändern. Der folgende Screenshot zeigt das Dialogfeld, nachdem der Benutzer ein Kennwort eingegeben hat.

Screenshot eines Dialogfelds mit einem Bearbeitungssteuerelement für die Eingabe eines Kennworts

Hinweis

Comctl32.dll Version 6 ist nicht verteilbar. Um Comctl32.dll Version 6 zu verwenden, geben Sie sie in einem Manifest an. Weitere Informationen zu Manifesten finden Sie unter Aktivieren von visuellen Formatvorlagen.

 

Wichtige Informationen

Technologien

Voraussetzungen

  • C/C++
  • Programmierung der Windows-Benutzeroberfläche

Anweisungen

Schritt 1: Erstellen Sie eine instance des Dialogfelds Kennwort.

Im folgenden C++-Codebeispiel wird die DialogBox-Funktion verwendet, um ein modales Dialogfeld zu erstellen. Die Dialogfeldvorlage IDD_PASSWORD wird als Parameter übergeben. Sie definiert unter anderem die Fensterstile, Schaltflächen und Dimensionen des Kennwortdialogfelds.

DialogBox(hInst,                   // application instance
    MAKEINTRESOURCE(IDD_PASSWORD), // dialog box resource
    hWnd,                          // owner window
    PasswordProc                    // dialog box window procedure
    );

Schritt 2: Initialisieren Sie das Dialogfeld, und verarbeiten Sie die Benutzereingabe.

Die Fensterprozedur im folgenden Beispiel initialisiert das Kennwortdialogfeld und verarbeitet Benachrichtigungen und Benutzereingaben.

Während der Initialisierung ändert die Fensterprozedur das Standardkennwortzeichen in ein + Zeichen und legt die Standard-Drucktaste auf Abbrechen fest.

Während der Verarbeitung von Benutzereingaben ändert die Fensterprozedur die Standard-Druckschaltfläche von ABBRECHEN in OK , sobald der Benutzer Text in das Bearbeitungssteuerelement eingibt. Wenn der Benutzer die Schaltfläche OK drückt, verwendet die Fensterprozedur die EM_LINELENGTH und EM_GETLINE Nachrichten, um den Text abzurufen.

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); 
}

Informationen zum Bearbeiten von Steuerelementen

Steuerelementreferenz bearbeiten

Verwenden von Steuerelementen bearbeiten

Steuerelement bearbeiten