/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Windows GUI
Fra : Ukendt


Dato : 25-03-03 22:45

Har prøvet på at lave en lille simpel windows gui med enkelte controls, men
jeg kan ikke få gui'en til at skifte fokus mellem to controls med tab.
Ydermere kan jeg heller ikke få default button til at virke når jeg trykker
enter.

Jeg laver mine controls sådan (et hovedvindue og to child vinduer):

hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_CONTROLPARENT,
WINDOW_CLASS_NAME, // class
"Test", // title
WS_VISIBLE | WS_POPUP,
0,0,
200,200, // initial width, height
NULL, // handle to parent
NULL, // handle to menu
hinstance,
NULL)

edit = CreateWindowEx(WS_EX_CLIENTEDGE, // extended style
"edit", // class
"0", // text on button
WS_CHILD | WS_VISIBLE | WS_TABSTOP,
0,20, // initial x,y
50,20, // initial width, height
hwnd, // handle to parent
(HMENU)(100),
hinstance,
0);

button = CreateWindowEx(NULL, // extended style
"button", // class
"Noget",
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,
50,20, // initial x,y
150,20, // initial width, height
hwnd,
(HMENU)(101),
hinstance,
0);

Der sker intet når jeg trykker tab eller enter!? Hvad mangler jeg? Får man
en message man skal behandle i messagehandleren eller hur?

/Smith



 
 
Bertel Brander (26-03-2003)
Kommentar
Fra : Bertel Brander


Dato : 26-03-03 00:56

John Smith skrev:
> Har prøvet på at lave en lille simpel windows gui med enkelte controls, men
> jeg kan ikke få gui'en til at skifte fokus mellem to controls med tab.
> Ydermere kan jeg heller ikke få default button til at virke når jeg trykker
> enter.
>
> Jeg laver mine controls sådan (et hovedvindue og to child vinduer):
>
> hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_CONTROLPARENT,
> WINDOW_CLASS_NAME, // class
> "Test", // title
> WS_VISIBLE | WS_POPUP,
> 0,0,
> 200,200, // initial width, height
> NULL, // handle to parent
> NULL, // handle to menu
> hinstance,
> NULL)
>
>
[SNIP]
> Der sker intet når jeg trykker tab eller enter!? Hvad mangler jeg? Får man
> en message man skal behandle i messagehandleren eller hur?
>
Den WINDOW_CLASS_NAME du bruger til at kreere dit main window har du
fået den fra et kald til RegisterClass(), med en pointer til en struktur?
I så fald har denne struktur en member variabel der hedder lpfnWndProc,
som er en pointer til en WindowProc funktion, som er din message
handler. Denne modtager alle beskder, som f.eks når du trykker på en
knap, se på denne i din dokumentation.
Jeg vil anbefale dig at bruge en compiler der kan lave skelettet til
din GUI for dig, dette er specielt en stor hjælp til de første par
windows applicationer. Du kan f.eks prøve LCC på:
http://www.cs.virginia.edu/~lcc-win32/
(den er gratis).
Hvis dette ikke hjælper, må du fortælle os noget mere, f.eks hvilken
compiler du bruger.

/bertel

--
Bertel Brander, author of Wain, a free text editor for programmers:
http://home20.inet.tele.dk/midgaard/program.htm


Ole Nielsby (26-03-2003)
Kommentar
Fra : Ole Nielsby


Dato : 26-03-03 01:22


John Smith <No Spam> skrev:

> Har prøvet på at lave en lille simpel windows gui med enkelte controls,
men
> jeg kan ikke få gui'en til at skifte fokus mellem to controls med tab.
> Ydermere kan jeg heller ikke få default button til at virke når jeg
trykker
> enter.

Tastaturnavigation i dialoger i Windows kræver at message loop
tjekker med IsDialogMessage. Det sker automatisk når man kalder
modale dialoger, men ved ikke-modale dialoger og andre vinduer
skal du selv sørge for at funktionen bliver kaldt (hvis ikke et eller
andet framework har gjort det for dig).

ON/Fjern sneglen fra min svaradresse


Ukendt (26-03-2003)
Kommentar
Fra : Ukendt


Dato : 26-03-03 18:58

> Tastaturnavigation i dialoger i Windows kræver at message loop
> tjekker med IsDialogMessage. Det sker automatisk når man kalder
> modale dialoger, men ved ikke-modale dialoger og andre vinduer
> skal du selv sørge for at funktionen bliver kaldt (hvis ikke et eller
> andet framework har gjort det for dig).

Jo tak, det løste problemet.

/Smith



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste