Visual C++ | Jak można przesuwać okno programu poprzez stworzony element?

0

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ź.

1

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.
0

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)

0

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

0
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)

0

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.

0
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1