Ikke-sperrende dialogbokser

En ikke-sperrende dialogboks bør være et popup-vindu å ha en systemmeny, en tittellinje og en tynn kantlinje; det vil si bør malen i boksen i dialogboksen Angi stilene WS_POPUP, WS_CAPTION, WS_BORDER og WS_SYSMENU. Systemet gjør ikke automatisk vise dialogboksen hvis ikke malen angir stilen WS_VISIBLE.

Et program oppretter en ikke-sperrende dialogboks ved hjelp av funksjonen CreateDialog eller CreateDialogIndirect . CreateDialog krever navnet eller identifikator for en ressurs som inneholder en dialog boks mal; CreateDialogIndirect krever håndtaket av en minne-objekt som inneholder en mal for dialogboksen-boksen. To andre funksjoner, CreateDialogParam og CreateDialogIndirectParam, også lage ikke-sperrende dialogbokser; de passerer en parameter som er angitt i dialogboksen boksen prosedyren når dialogboksen er opprettet.

CreateDialog og andre funksjoner for etableringen returnere en vindus-handle for dialogboksen. Programmet og dialogboksen boksen prosedyre kan bruke denne referansen til å administrere dialogboksen. For eksempel, hvis WS_VISIBLE ikke er angitt i dialogboksen boksen malen, kan programmet vise dialogboksen ved å sende vindusreferansen til funksjonen ShowWindow.

En ikke-sperrende dialogboks verken deaktiverer eiervinduet eller sender meldinger til den. Når du oppretter dialogboksen, systemet gjør det aktive vinduet, men brukeren eller programmet kan endre det aktive vinduet når som helst. Hvis dialogboksen blir inaktive, fortsatt det over eiervinduet i Z-rekkefølge, selv om eiervinduet er aktivt.

Programmet er ansvarlig for henting og utsending inndatameldinger til dialogboksen. De fleste programmer har hovedmeldingsløkke for dette. Hvis du vil gi brukeren å flytte til og merke kontroller ved hjelp av tastaturet, men må programmet kalle funksjonen IsDialogMessage . Hvis du vil ha mer informasjon om denne funksjonen, kan du se Dialogboksen boksen tastatur-grensesnitt.

En ikke-sperrende dialogboks kan ikke returnere en verdi til programmet som en modal dialogboks gjør, men dialogboksen boksen prosedyren kan sende informasjon til eiervinduet ved hjelp av funksjonen SendMessage.

Et program må ødelegge alle ikke-sperrende dialogbokser før du avslutter. Det kan ødelegge et ikke-sperrende dialogboksen ved hjelp av funksjonen DestroyWindow . I de fleste tilfeller kaller dialogboksen boksen prosedyren DestroyWindow svar på brukerinndata, for eksempel velge Avbryt-knappen. Hvis brukeren aldri lukker dialogboksen på denne måten, må programmet kalle DestroyWindow.

DestroyWindow gjør Ugyldig vindusreferanse for dialogboksen, slik at eventuelle etterfølgende kall til funksjoner som bruker håndtaket returnerer feilverdier. For å hindre feil, skal dialogboksen boksen prosedyre varsle eieren at dialogboksen har blitt ødelagt. Mange programmer, opprettholde en global variabel som inneholder referansen for dialogboksen. Når dialogboksen boksen prosedyre ødelegger dialogboksen, angir den globale variabelen også til NULL, som angir at dialogboksen er ikke lenger gyldig.

Dialogboksen boksen prosedyren må ikke kalle funksjonen EndDialog å ødelegge et ikke-sperrende dialogboksen.

Index