Vpišite se z Microsoftovim
Vpišite se ali ustvarite račun.
Pozdravljeni,
Izberite drug račun.
Imate več računov
Izberite račun, s katerim se želite vpisati.

Povzetek

Programi, ki temeljijo na sistemu Windows, pogosto prikažejo pogovorna okna za vnos podatkov in zahtevajo informacije uporabnikov. Ta pogovorna okna lahko vsebujejo več kontrolnikov za urejanje in dva ukazna gumba (potisna), označena v redu in Prekliči. Primer pogovornega okna za vnos podatkov je tista, ki zahteva osebne podatke, kot so številka socialnega zavarovanja, naslov, identifikacija (ID), številka datuma/ure in tako dalje od uporabnikov. Vsak od teh elementov je vnesen v kontrolnik za urejanje. Privzeto je tabulatorko v pogovornem oknu uporabljeno, če želite premikati fokus med kontrolniki za urejanje. Kot skupen uporabniški vmesnik lahko uporabite tudi tipko ENTER (Return), da se premaknete med kontrolniki za urejanje (na primer, ko uporabnik vnese del informacij, s pritiskom tipke ENTER premakne fokus na naslednje polje). Na voljo je nekaj načinov za omogočanje uporabe tipke ENTER za premikanje med kontrolniki za urejanje. Eden od načinov je uporaba WM_COMMAND in sporočil o obvestilih, ki so v pogovornem oknu za urejanje kontrolnikov in gumbov. Drug način vključuje podkategorije kontrolnikov za urejanje. Tretja vključuje uporabo čarovnika za studie in predavanje in ustvarjanje nove funkcije člana pogovornega okna.

Več informacij

Metoda I: (WM_COMMAND)

Ta metoda temelji na tem obnašanju pogovornih oken (upravitelja pogovornega okna) in usmerjanja v sistemu Windows. Če je v pogovornem oknu ali v enem od njegovih kontrolnikov trenutno fokus vnosa, pritisnite tipko ENTER, da Windows pošljete sporočilo WM_COMMAND s parametrom idItem (wParam), nastavljenim na ID privzetega ukaznega gumba. Če v pogovornem oknu ni privzetega ukaznega gumba, je parameter idItem privzeto nastavljen na IDOK. Ko aplikacija prejme sporočilo WM_COMMAND s idItem nastavljeno na ID privzetega ukaza, se fokus ohrani s kontrolnikom, ki je bil fokus pred pritisnjeno tipko ENTER. Klicanje GetFocus () na tej strani vrne ročico kontrolnika, ki je bil fokus pred pritisnjeno tipko ENTER. Aplikacija lahko preveri to ročico kontrolnika in določi, ali pripada kateremu koli kontrolniku za urejanje v pogovornem oknu. Če je, je uporabnik vnašal podatke v enega od kontrolnikov za urejanje in nato pritisnite tipko ENTER. V tem hipu lahko aplikacija pošlje WM_NEXTDLGCTL sporočilo v pogovorno okno, da premakne fokus na naslednji kontrolnik. Če pa je bila fokus z enim od ukaznih gumbov (preklic ali v redu), nato GetFocus () vrne ročico kontrolnika gumba, na kateri lahko razrešite pogovorno okno. Psevdo koda za to logiko je podobna temu v postopku pogovornega okna aplikacije:

     case WM_COMMAND:     if(wParam=IDOFDEFBUTTON || IDOK) {          // User has hit the ENTER key.          hwndTest = GetFocus() ;          retVal = TesthWnd(hWndTest) ;          //Where retVal is a boolean variable that indicates whether        //the hwndTest is the handle of one of the edit controls.          if(hwndTest) {         //Focus is with an edit control, so do not close the dialog.            //Move focus to the next control in the dialog.         PostMessage(hDlg, WM_NEXTDLGCTL, 0, 0L) ;         return TRUE ;          }          else {            //Focus is with the default button, so close the dialog.            EndDialog(hDlg, TRUE) ;            return FALSE ;          }        }     break ;

Metoda II

Ta metoda vključuje podrazred (urejanje kontrolnika) v pogovornem oknu. Ko so kontrolniki za urejanje podklasificirani ali preusmerjeni, je vsem vnosu tipkovnice poslano postopek podrazred/podrazred kontrolnika za urejanje, ki ima trenutno fokus vnosa, ne glede na to, ali ima pogovorno okno privzeti ukazni gumb. Aplikacija lahko Nastavi tipko navzdol (ali Char), poišče tipko ENTER, nato pa ustrezno obdelavo. To je vzorčni postopek podrazreda, ki poišče tipko ENTER:

   //*-------------------------------------------------------------------   //| Title:   //|     SubClassProc   //|   //| Parameters:   //|     hWnd            - Handle to the message's destination window   //|     wMessage        - Message number of the current message   //|     wParam          - Additional info associated with the message   //|     lParam          - Additional info associated with the message   //|   //| Purpose:   //|     This is the window procedure used to subclass the edit control.   //*---------------------------------------------------------------------   long FAR PASCAL SubProc(HWND hWnd, WORD wMessage,WORD wParam,LONG                           lParam)   {       switch (wMessage)        {             case WM_GETDLGCODE:               return (DLGC_WANTALLKEYS |                       CallWindowProc(lpOldProc, hWnd, wMessage,                                      wParam, lParam));             case WM_CHAR:             //Process this message to avoid message beeps.            if ((wParam == VK_RETURN) || (wParam == VK_TAB))              return 0;               else              return (CallWindowProc(lpOldProc, hWnd,                                        wMessage, wParam, lParam));          case WM_KEYDOWN:               if ((wParam == VK_RETURN) || (wParam == VK_TAB)) {                 PostMessage (ghDlg, WM_NEXTDLGCTL, 0, 0L);                 return FALSE;               }            return (CallWindowProc(lpOldProc, hWnd, wMessage,                                      wParam, lParam));            break ;          default:               break;        } /* end switch */ 

Metoda 3

Ta metoda vključuje uporabo studia app in ClassWizard ter ustvarjanje nove funkcije člana pogovornega okna. S tem načinom lahko uporabnik pritisne tipko ENTER in se osredotoči na naslednji kontrolnik za urejanje. Če je fokus trenutno na zadnjem kontrolniku za urejanje v pogovornem oknu, bo fokus napredoval do prvega kontrolnika za urejanje. Najprej uporabite program Studio app, če želite spremeniti ID gumba v redu pogovornega okna. Privzeto obnašanje aplikacijskega studia je, da gumb» v redu «IDOK ID. ID gumba v redu bi moral biti spremenjen v drugo vrednost, kot je na primer IDC_OK. Spremenite lahko tudi lastnosti gumba» v redu «, da ne bo privzetega pushbutton. Nato uporabite ClassWizard za ustvarjanje novega pogovornega okna» član «funciton. Poimenujte novo funkcijo članici nekaj podobnega OnClickedOK. Ta funkcija bi morala biti povezana s sporočilom BN_CLICKED iz kontrolnika IDC_OK. Ko je to storjeno, napišite telo funkcije OnClickedOK. Kodo, ki bi jo običajno vnesli v funkcijo OnOK, morate vstaviti v novo funkcijo OnClickedOK, vključno s funkcijo OnOK razreda. V datoteko glave v pogovornem oknu dodajte ta prototip:

   protected:      virtual void OnOK();

V pogovorno okno dodajte funkcijo OnOK in koda je prikazana spodaj:

   void CMyDialog::OnOK()   {        CWnd* pwndCtrl = GetFocus();        CWnd* pwndCtrlNext = pwndCtrl;        int ctrl_ID = pwndCtrl->GetDlgCtrlID();        switch (ctrl_ID) {            case IDC_EDIT1:                pwndCtrlNext = GetDlgItem(IDC_EDIT2);                break;            case IDC_EDIT2:                pwndCtrlNext = GetDlgItem(IDC_EDIT3);                break;            case IDC_EDIT3:                pwndCtrlNext = GetDlgItem(IDC_EDIT4);                break;            case IDC_EDIT4:                pwndCtrlNext = GetDlgItem(IDC_EDIT1);                break;            case IDOK:                CDialog::OnOK();                break;            default:                break;        }        pwndCtrlNext->SetFocus();   }

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo jezika?
Kaj je vplivalo na vašo izkušnjo?
Če pritisnete »Pošlji«, bomo vaše povratne informacije uporabili za izboljšanje Microsoftovih izdelkov in storitev. Vaš skrbnik za IT bo lahko zbiral te podatke. Izjavi o zasebnosti.

Zahvaljujemo se vam za povratne informacije.

×