[win32] control posities afhankelijk van grootte window *

Pagina: 1
Acties:

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 23:03
Ik heb een win32 applicatie met daarin een treeview en een listview. Maar nu heb ik de grote van zowel de listview als de treeview er hard in gecodeerd. De treeview eindigd op 250 en de listview begint op 250. Maar kan dit ook met een soort van percentage van hoe groot het venster is?
Ik heb al dingen geprobeerd als 0,25 * wParam, maar dit hielp jammer genoeg niks.
Volgens mij kan het niet moeilijk zijn, maar ik kan het echt nergens vinden :'(
Iemand die mij kan helpen.

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Als posities en groottes voor windows kun je alleen waarden in pixels gebruiken, maar je kunt toch gewoon zelf uitrekenen wat 25% van het parent venster is en dat gebruiken als waarde? En wat 'wParam' hier mee te maken heeft weet ik niet, dat is de algemene naam van een van de parameters van zo'n beetje alle windows messages, dus zo los 'wParam' betekent niks.

www.madwizard.org


  • Xof
  • Registratie: Juni 2001
  • Laatst online: 23:03
Nou omdat je wParam gebruikt voor de breedte van het venster daarom wParam :)
25% zelf uitrekenen is idd niet moeilijk, maar wat dacht je van een resize van het venster? :)
dan moet nml die twee vensters ook mee gaan rekken :)

  • 12_0_13
  • Registratie: April 2004
  • Laatst online: 12-02 13:19
Window's resize message vangen en alles opnieuw berekenen?

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 23:03
12_0_13 schreef op 17 juni 2004 @ 15:17:
Window's resize message vangen en alles opnieuw berekenen?
hmm ja zit wat in... :o

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Xof schreef op 17 juni 2004 @ 15:08:
Nou omdat je wParam gebruikt voor de breedte van het venster daarom wParam :)
Nee, het gebruik van wParam hangt volledig af van de message die je bedoelt, en zolang jij niet zegt welke message jij bedoelt is het vrij onduidelijk wat je nou eigenlijk wilt bereiken. Dus wat madwizard al zei, gewoon 'wParam' zegt niet zoveel. Bij een WM_KEYDOWN is de wParam bijvoorbeeld een virtual keycode, maar dat heeft weer totaal niets met je probleem te maken, of wel? :)

.edit: heb je titel ook maar wat duidelijker gemaakt

[ Voor 5% gewijzigd door .oisyn op 17-06-2004 15:35 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:42

The End

!Beginning

Je moet OnSize gebruiken (ON_WM_SIZE). In die functie kan je dan de 2 controls (de listview en de tree) resizen met 'MoveWindow'.
Via een simpel berekeningetje kan je dat dmv een percentage doen.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 16-05 23:29
The End schreef op 17 juni 2004 @ 16:16:
Je moet OnSize gebruiken (ON_WM_SIZE). In die functie kan je dan de 2 controls (de listview en de tree) resizen met 'MoveWindow'.
Via een simpel berekeningetje kan je dat dmv een percentage doen.
Dat werkt uiteraard alleen met MFC :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

MisterData schreef op 17 juni 2004 @ 16:42:
[...]


Dat werkt uiteraard alleen met MFC :)
ON_WM_SIZE wel ja, maar je kunt in iedere app de WM_SIZE message afvangen natuurlijk.... :z

Professionele website nodig?


  • Xof
  • Registratie: Juni 2001
  • Laatst online: 23:03
Ik zal ff pasten hoe ik het dus nu doe
Het volgende heb ik staan in WM_SIZE :)

C++:
1
2
3
4
5
6
7
//resize de treeview
hTreeView = m_CTreeView->GetHandler();
MoveWindow(hTreeView,NULL,28,250,HIWORD(lParam)-50,FALSE);

//resize de listview
hListView = m_CListView->GetHandler();
MoveWindow(hListView,250,28,LOWORD(lParam)-300,HIWORD(lParam)-50,FALSE);


Ik heb het nu dus zo, die 28 is lengte van de toolbar dus begint die op ywaarde 28 :)
En die wParam en lParam is me nog steeds niet helemaal duidelijk, staat overal zo cryptisch omschreven, met msdn kom je een heel eind. Maar volgens mij hebben de params hier opzich niet zo heel veel mee te maken nee :)
Bovenstaande code vind ik er ook niet supernetjes uitzien en dat moet volgens mij dus ook anders kunnen :)
Ik kan normaal veel via google vinden etc. maar hier kon ik jammer genoeg niks op vinden of ik had de verkeerde keywords.

Edit: Curry684.. dank u voor uw verhelderende uitleg :D

[ Voor 4% gewijzigd door Xof op 17-06-2004 23:23 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

WParam en LParam zijn legacy termen uit de tijd van Win16: respectievelijk betekenen ze Word-parameter en Long-parameter. In de tijd van Win16 was dat dus een WORD van 16 en een LONG POINTER van 32 bits, tegenwoordig is de WPARAM een DWORD (32-bits platform etc.) en heb je dus in principe 2 gelijke parameters. Het is om deze reden nog wel zo dat een pointer parameter in principe in LParam zit, en een value param in WParam, maar als je 2 pointers nodig hebt wordt er gewoon lekker gecast ;)

Professionele website nodig?

Pagina: 1