29. juli 2002 - 12:31Der er
20 kommentarer og 1 løsning
MessageBox always on top & Setfocus, hvordan ?
Jeg bruger Borland Builder 4.0 og vil gerne lave en MessageBox som så popper op over alle andre vinduer, og bliver der. Dvs. den skal have focus & sættes til always on top. Selve koden til de ting har jeg, men hvordan får jeg et handle til MessageBoxen mens den kører ? Jeg har prøvet at lave messagebox'en, og så fyre koden af lige efter, men den kode bliver åbenbart ikke eksekveret før messagebox'en er lukket igen. Koden så sådan her ud:
Ehm er der andre metoder ? Og hvordan laver jeg en modeless dialog ? Jeg har prøvet med MessageDlg, men så opretter den jo boxen "indenfor" mit program, og det ligger typisk i systray, og så kan jeg da slet ikke se hvordan jeg skulle få den always on top osv. ?
Jeg vil informere brugeren om at klokken nu er X, fordi brugeren selv via mit program, har bedt om en påmindelse. Denne påmindelse skal, såfremt man kører et fullscreen program, have focus så det program minimeres, f.eks. Counter-Strike eller Warcraft III (som jeg selv spiller af og til). Windows sørger selv for at minimere såfremt programmet får fokus (så vidt jeg husker). Jeg prøver lige at lege lidt med CreateDialog.
Hmmm CreateDialog virker lidt mystisk på mig, det virker som om den ligesom MessageDlg opretter vinduet indeni Programmet, dvs. sådan at der ikke dukker en ny op nede i taskbaren (som jeg jo meget gerne vil have at der gør).
Du kan evt prøve at lave en messagebox med attributten MB_SYSTEMMODAL
Lige en bemærkning dog! Sådanne programmer er MEGET irriterende for spiludviklere, da fullscreen, exclusive mode netop er beregnet til at der IKKE skal forstyrres fra andre programmer...
Hmmm jamen ideen i at man bliver mindet om at klokken er X, er jo ligesom væk, hvis det kun virker i nogle situationer. Men jo f.eks. Half-life mister lyden, hvis det bliver minimeret. Og grunden til at jeg vil have et handle, er at så kan jeg give den fokus & sætte den til always-on-top, via følgende: SetFocus(Handle); SetWindowPos(Handle, TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
Hmmm i Borland duer det da for mig kun med et + tegn ?? Har prøvet systemmodal & topmost, samt setforeground, det virker ikke helt som det skal, idet den bare popper op midt i Half-Life, altså HL minimeres ikke :(
Nåja, men hvis man nu skulle noget vigtigt, så er det vel godt nok at spillet bliver minimeret. Altså man sætter jo ikke den timer der for sjov, og den popper aldrig op af sig selv, så jeg synes da det er smart nok, men du er uenig kan jeg forstå ?
Jamen kan du ikke se det? Hvis du skal noget vigtigt er det da absolut lige meget om der kommer et vindue midt i sigtekornet eller om programmet bliver minimeret..!
Jeg synes bare det ser så ufedt ud at den dukker op midt i, men ok jeg lader det være som det er. Tak for hjælpen :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.