Witam, niedawno rozpoczęłam programowanie obiektowe w Visual Studio w języku C++. Zrobiłam parę programów i teraz... Chciałabym spróbować zrobić swoje tak zwane UI... Ale wytłumaczę to prosto... Chciałabym zrobić okno bez obramowania które dałoby się zamykać, minimalizowac oraz przesuwać... I ogólnie z tym ostatnim elementem jest problem... Jak stworzyć formułę która będzie umożliwiać przesuwanie całego okna? Myślę żeby zrobić taki panel na górze okna i 'dać' mu właściwości przesuwania całego okna. Wiem, że w języku C# jest to niezmiernie łatwe... Widziałam ten kod, ale czy da się to zrobić w C++/CLR? Nie szukam zaawansowanego kodu... To tylko jedna opcja... Mouse down i Mouse move... Z góry dziękuję za odpowiedź.
Należy odpowiednio oprogramować zdarzenie WinAPI o nazwie WM_NCHITTEST, a takie rzeczy jak minimalizacja czy przesuwanie zaczną działać automatycznie, bo system się nimi zajmie.
Ale:
- to dość zaawansowany temat, oraz
- trudno to zrobić dobrze, nawet jeśli wie się co się robi.
Rozumiem...Znalazłam ostatecznie taki kod :
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Close();
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
this->dragging = false;
}
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
this->dragging = true;
this->offset = Point(e->X, e->Y);
}
private: System::Void Form1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
if (this->dragging){
Point currentScreenPos = PointToScreen(e->Location);
Location = Point(currentScreenPos.X - this->offset.X, currentScreenPos.Y - this->offset.Y);
}
}
private: System::Void Form1_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
this->dragging = false; //this bool is awesome
}
Tutaj jest tylko problem z minimalizacją... Ale poza tym wszystko śmiga. (PS Nie zależy mi na zmianie rozmiaru okienka podczas działania)
https://4programmers.net/Forum/C_i_.NET/196733-o_naduzywaniu_c++cli
Jeśli masz poczucie jakiejś łatwości czy elegancji C#, to prawda.
C++/CLI to kiła łącząca wady obu nurtów. Nie jest to w szczególności język C++, i tak nie mów ani tak nie myśl. Przez samego producenta producenta odstawiona na boczny tor
AnyKtokolwiek napisał(a):
https://4programmers.net/Forum/C_i_.NET/196733-o_naduzywaniu_c++cli
Jeśli masz poczucie jakiejś łatwości czy elegancji C#, to prawda.
C++/CLI to kiła łącząca wady obu nurtów. Nie jest to w szczególności język C++, i tak nie mów ani tak nie myśl. Przez samego producenta producenta odstawiona na boczny tor
Ciekawa lektura, przeczytałam... Ogółem zabrałam się za C++ w Code::Blocks od podstaw i uczyłam się pisać wszystkie typy programów konsolowych jakie się da. Następnie automatycznie przeszłam do Visual'a, troszkę wpadłam w głęboką wodę, ale jakoś idzie. Poniekąd dotykam 'mocy' C#, który w tej chwili góruje w sekcji programowania obiektowego ( ze względu na Visual Studio ). Po przerobieniu niektórych rzeczy jeszcze z programowania obiektowego w C++ zabieram się za język C#. (PS Chciałabym z całego serca przerobić jakiś język do tworzenia aplikacji na Android'a/IOS'a)
W skrócie powiem tak... C++ i C# są to bardzo podobne języki, dokopałam się jak wszystko poustawiać i stwierdzam, że w C++ również można zrobić aplikację bez ramek którą da się przesuwać... znalazłam nawet kod minimalizacji ... dodany do przycisku : "this.WindowState = FormWindowState.Minimized;" Wystarczyło pozamieniać kropki na dwukropki.. i wskaźnik THIS napisać w C++ (this->). Teraz wszystko działa jak należy. Uważam, że każdy z tych języków jest dobry... Niebawem rozpocznę kolejną przygodę tym razem z C#, ale widząc dużo podobieństw twierdzę, że szybko się go nauczę. Dziękuję za wszystkie odpowiedzi. Temat do zamknięcia.
AnyKtokolwiek napisał(a):
https://4programmers.net/Forum/C_i_.NET/196733-o_naduzywaniu_c++cli
Jeśli masz poczucie jakiejś łatwości czy elegancji C#, to prawda.
C++/CLI to kiła łącząca wady obu nurtów. Nie jest to w szczególności język C++, i tak nie mów ani tak nie myśl. Przez samego producenta producenta odstawiona na boczny tor
Ale jednak WinForms jest dosyć łatwe pod C++/CLI, a praktycznie wszystkie podsuwane początkującemu alternatywy pod C++ są znacznie mniej przystępne.