Uruchomienie funkcji w klasie aplikacji
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Uruchomienie funkcji w klasie aplikacji

AutorWiadomość
Temat założony przez niniejszego użytkownika
Uruchomienie funkcji w klasie aplikacji
» 2019-11-12 17:55:44
Witam. Chciałbym uruchomić funkcję "Start" znajdującą się w pliku .h z poziomu pliku .cpp, lecz mój sposób nie działa. Macie jakieś propozycje jak to zrobić ?


plik .h
C/C++
#pragma once

namespace AppTest {
   
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
   
    /// <summary>
    /// Podsumowanie informacji o Formatka
    /// </summary>
   
    public ref class Formatka
: public System::Windows::Forms::Form
    {
    public:
        Formatka( void )
        {
            InitializeComponent();
            //
            //TODO: W tym miejscu dodaj kod konstruktora
            //
        }
       
    protected:
        /// <summary>
        /// Wyczyść wszystkie używane zasoby.
        /// </summary>
        ~Formatka()
        {
            if( components )
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Label ^ labelzegar;
    protected:
    private: System::Windows::Forms::Timer ^ timer1;
    private: System::Windows::Forms::Label ^ labeldeff;
       
    private: System::ComponentModel::IContainer ^ components;
       
       
    protected:
       
       
    protected:
       
    private:
        /// <summary>
        /// Wymagana zmienna projektanta.
        /// </summary>
       
       
        #pragma region Windows Form Designer generated code
        /// <summary>
        /// Metoda wymagana do obsługi projektanta — nie należy modyfikować
        /// jej zawartości w edytorze kodu.
        /// </summary>
        void InitializeComponent( void )
        {
            this->components =( gcnew System::ComponentModel::Container() );
            this->labelzegar =( gcnew System::Windows::Forms::Label() );
            this->timer1 =( gcnew System::Windows::Forms::Timer( this->components ) );
            this->labeldeff =( gcnew System::Windows::Forms::Label() );
            this->SuspendLayout();
            //
            // labelzegar
            //
            this->labelzegar->AutoSize = true;
            this->labelzegar->BackColor = System::Drawing::Color::Transparent;
            this->labelzegar->Font =( gcnew System::Drawing::Font( L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
            static_cast < System::Byte >( 238 ) ) );
            this->labelzegar->ForeColor = System::Drawing::Color::Red;
            this->labelzegar->Location = System::Drawing::Point( 4, 0 );
            this->labelzegar->Name = L"labelzegar";
            this->labelzegar->Size = System::Drawing::Size( 46, 13 );
            this->labelzegar->TabIndex = 0;
            this->labelzegar->Text = L"45.000";
            //
            // timer1
            //
            this->timer1->Interval = 50;
            this->timer1->Tick += gcnew System::EventHandler( this, & Formatka::timer1_Tick );
            //
            // labeldeff
            //
            this->labeldeff->AutoSize = true;
            this->labeldeff->BackColor = System::Drawing::Color::Transparent;
            this->labeldeff->Font =( gcnew System::Drawing::Font( L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
            static_cast < System::Byte >( 238 ) ) );
            this->labeldeff->ForeColor = System::Drawing::Color::FromArgb( static_cast < System::Int32 >( static_cast < System::Byte >( 0 ) ), static_cast < System::Int32 >( static_cast < System::Byte >( 0 ) ),
            static_cast < System::Int32 >( static_cast < System::Byte >( 192 ) ) );
            this->labeldeff->Location = System::Drawing::Point( 79, 0 );
            this->labeldeff->Name = L"labeldeff";
            this->labeldeff->Size = System::Drawing::Size( 31, 13 );
            this->labeldeff->TabIndex = 2;
            this->labeldeff->Text = L"      ";
            //
            // Formatka
            //
            this->AutoScaleDimensions = System::Drawing::SizeF( 6, 13 );
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size( 116, 13 );
            this->Controls->Add( this->labeldeff );
            this->Controls->Add( this->labelzegar );
            this->Name = L"Formatka";
            this->Text = L"Formatka";
            this->Load += gcnew System::EventHandler( this, & Formatka::Formatka_Load );
            this->ResumeLayout( false );
            this->PerformLayout();
           
        }
        #pragma endregion
       
    public:
       
        double czas, zapisanyczas;
       
    public:
       
        void Start()
        {
            czas = 45.000;
            timer1->Enabled = true;
            //labelzegar->Text = Convert::ToString(czas);
            //labeldeff->Text = Convert::ToString(zapisanyczas);
        }
       
    private: System::Void timer1_Tick( System::Object ^ sender, System::EventArgs ^ e )
        {
            czas -= 0.05;
            labelzegar->Text = Convert::ToString( czas );
        }
    private: System::Void Formatka_Load( System::Object ^ sender, System::EventArgs ^ e )
        {
        }
    };
}

plik .cpp
C/C++
#include "Formatka.h"

using namespace System;
using namespace System::Windows::Forms;

[ STAThread ]

void Main()
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault( false );
    AppTest::Formatka form;
    Application::Run( % form );
    form.Start(); // Start Timera (Nie dziala)
}
P-175546
» 2019-11-13 18:18:19
C/C++
public ref class Formatka
form.Start(); // Start Timera (Nie dziala)
//a nie powinno byc?
Formatka.Start();
//or
Formatka::Start();
Mozna też by przypisać start timer'a do zdarzenia np.
click buttona
Poniżej link do samouczka Microsoft'u
Timer Klasa
P-175555
Temat założony przez niniejszego użytkownika
Odpowiedź
» 2019-11-13 22:53:59
Ja chcę bez buttona. Tymi sposobami, które wymieniłeś był błąd przy kompilacji
P-175564
» 2019-11-14 18:45:21
nie wiem co chcesz osiągnąć, ale jeżeli interesuje cię zbudowania cyfrowego
zegara, który ma się uruchomić po odpaleniu programu
to podam Ci link, żebyś zobaczył sobie jak to wygląda
znajdzesz tam kod źródłowy i film instruktażowy
EPISODE 08 - Make  Digital Clock

//edit
a próbowałeś tak, jak to się robi w podejsciu obiektowym
C/C++
public ref class Formatka
Formatka object1;
object1.Start();

lub
C/C++
void Main()
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault( false );
    AppTest::Formatka form;
    Application::Run( % form );
    Start(); //samo Start()
}

albo popróbować z
C/C++
void Formatka_Load( System::Object ^ sender, System::EventArgs ^ e )
{
}




P-175575
Temat założony przez niniejszego użytkownika
Odpowiedz
» 2019-11-14 21:57:51
JA chcę tylko uruchomić funkcję "Start" przez plik .cpp. Zobaczyłem ten filmik i wykorzystam z niego tylko to czarne okienko bez obramowania ;). Także dziękuję i liczę na dalszą pomoc
P-175578
» 2019-11-16 23:40:15
C/C++
Formatka( void )
{
    InitializeComponent();
    //
    //TODO: W tym miejscu dodaj kod konstruktora
    //
}
Próbowałeś wywołać Start() tu?
P-175591
Temat założony przez niniejszego użytkownika
pekfos
» 2019-11-17 15:19:20
pekfos pewnie by zadziałało, lecz funkcja start uruchomi się wtedy po odpaleniu programu, a mój cel jest taki, żeby odpalić go gdzieś w kodzie w pliku .cpp
P-175594
» 2019-11-17 15:30:18
Po co dokładnie chcesz to zrobić? Application::Run() zawiera pętlę komunikatów, więc cokolwiek napiszesz po tym wywołaniu wykona się dopiero przy wyłączaniu aplikacji. Jedyne opcje to wywołanie twojej metody przed Run(), w konstruktorze klasy Formatka (równoznaczne z poprzednim), albo w innych metodach zapewnianych przez System::Windows::Forms::Form, które będą wywoływane w ramach Application::Run(), na przykład wspomniane już Load.
P-175595
« 1 » 2
 Strona 1 z 2Następna strona