Alpha Napisano Listopad 20, 2019 Autor Zgłoś Udostępnij Napisano Listopad 20, 2019 8) Witam Czy istnieje jakiś inny (od tego poniżej) sposób na rozmieszczanie kontrolek na oknie? Chodzi mi o coś w stylu właściwości Align z Delphi, czyli o jakąś cudowną funkcję, która sprawi że taka kontrolka będzie np. przylegać do lewej krawędzi okna głównego i się od niego nie oderwie nawet jeżeli zmienię jego rozmiar :D Do tej pory robiłem to tak, ale i tak nie działa tak jak bym chciał :( case WM_SIZE: MoveWindow(StatusBar,0,0,0,0,true); RECT RectA, RectB, RectC, RectD; GetClientRect(hwnd,&RectA); GetClientRect(StatusBar,&RectB); MoveWindow(LewyPanel,0,0,150,RectA.bottom-RectB.bottom,true); MoveWindow(PrawyPanel,RectA.right-150,0,150,RectA.bottom-RectB.bottom,true); GetClientRect(hwnd,&RectA); GetClientRect(LewyPanel,&RectB); GetClientRect(PrawyPanel,&RectC); GetClientRect(StatusBar,&RectD); MoveWindow(PageControl, RectB.right+10, 0, RectA.right-RectB.right-(RectC.right-RectC.left)-20,RectA.bottom-RectD.bottom,true); GetClientRect(LewyPanel,&RectA); MoveWindow(TreeView1,0,18,RectA.right,100,true); break; Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Cipher Napisano Listopad 21, 2019 Zgłoś Udostępnij Napisano Listopad 21, 2019 Niestety na Delphi się nie znam i nie wiem za bardzo do czego służy Align. Jednak z Twego opisu wnioskuje iż chodzi Ci o to aby kontrolki zachowywały swoje proporcje (położenie) w stosunku do rozmiaru okna. Jeżeli tak to może spróbuj w ten sposób (przykład z przyciskiem): double xPrawy; double yPrawy; double xLewy; double yLewy; //.... //.... case WM_CREATE: hButton=CreateWindow("button","Przycisk",WS_CHILD|WS_VISIBLE,(int)xLewy,(int)yLewy,(int)xPrawy,(int)yPrawy,hWnd,(HMENU)100,GetModuleHandle(NULL),NULL); break; //.... //.... case WM_SIZE: xPrawy=(LOWORD(lParam))*0.225; yPrawy=(HIWORD(lParam))/20; xLewy=LOWORD(lParam)/40; yLewy=HIWORD(lParam)/40; MoveWindow(hButton,(int)xLewy,(int)yLewy,(int)xPrawy,(int)yPrawy,TRUE); break; Ok co się tam dzieje. W LOWORD(lParam) masz szerokość okna a w HIWORD(lParam) wysokość. Przy założeniu że okno główne ma rozmiary 400x400 przycisk będzie się znajdował w pozycji 10x10 bo xLewy=LOWORD(lParam)/40 (co daje 400/40=10) i yLewy=HIWORD(lParam)/40. Będzie miał rozmiar 90x100 bo xPrawy=(LOWORD(lParam))*0.225 (co daje 400*0.225=90) i yPrawy=(HIWORD(lParam))/20 (co daje 400/20=20). Po zmianie rozmiarów okna głównego wyniki tych działań ulegną zmianie a co za tym idzie zmieni się rozmiar i położenie przycisku jednak proporcje względem okna zostaną zachowane. Nie wiem jednak czy o to ci chodziło, jeżeli nie to napisz. Może pomyśli się coś innego. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.