Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Uruchomienie funkcji w klasie aplikacji

Ostatnio zmodyfikowano 2019-11-18 17:46
Autor Wiadomość
sewek14
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
nanoant20
» 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
sewek14
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
nanoant20
» 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
sewek14
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
pekfos
» 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
sewek14
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
pekfos
» 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 2 Następna strona