Стоит задача сделать приложение с формой кнопками и другими элементами. Полазив в VC2008 выбрал CLR. Тут же столкнулся с кучей проблем, кто-нибудь может посоветует хорошую книгу. А пока хотел спросить как сделать чтобы созданный поток выполняя ф-ию мог записывать например в листбокс текст. Можно передать указатель, но если допустим мне нужен не только листбокс? Код | #pragma once
class ThreadClass{ public: static void ThreadProc(void* pParam){ // вывести строку в листбокс
return; } };
namespace program {
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> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } }
protected: private: System::Windows::Forms::ListBox^ listBox1; private: System::Windows::Forms::StatusStrip^ statusStrip1; private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Button^ button3; private: System::Windows::Forms::Button^ button4;
protected:
private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->listBox1 = (gcnew System::Windows::Forms::ListBox()); this->statusStrip1 = (gcnew System::Windows::Forms::StatusStrip()); this->button1 = (gcnew System::Windows::Forms::Button()); this->button2 = (gcnew System::Windows::Forms::Button()); this->button3 = (gcnew System::Windows::Forms::Button()); this->button4 = (gcnew System::Windows::Forms::Button()); this->SuspendLayout(); // // listBox1 // this->listBox1->FormattingEnabled = true; this->listBox1->Location = System::Drawing::Point(12, 12); this->listBox1->Name = L"listBox1"; this->listBox1->Size = System::Drawing::Size(394, 290); this->listBox1->TabIndex = 1; // // statusStrip1 // this->statusStrip1->Location = System::Drawing::Point(0, 479); this->statusStrip1->Name = L"statusStrip1"; this->statusStrip1->Size = System::Drawing::Size(417, 22); this->statusStrip1->TabIndex = 2; // // button1 // this->button1->Location = System::Drawing::Point(12, 308); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(94, 30); this->button1->TabIndex = 3; this->button1->Text = L"Start"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); // // button2 // this->button2->Location = System::Drawing::Point(112, 308); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(94, 30); this->button2->TabIndex = 4; this->button2->Text = L"button2"; this->button2->UseVisualStyleBackColor = true; // // button3 // this->button3->Location = System::Drawing::Point(212, 308); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(94, 30); this->button3->TabIndex = 5; this->button3->Text = L"button3"; this->button3->UseVisualStyleBackColor = true; // // button4 // this->button4->Location = System::Drawing::Point(312, 308); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(94, 30); this->button4->TabIndex = 6; this->button4->Text = L"button4"; this->button4->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(417, 501); this->Controls->Add(this->button4); this->Controls->Add(this->button3); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Controls->Add(this->statusStrip1); this->Controls->Add(this->listBox1); this->Name = L"Form1"; this->Text = L"Remoute Server"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { _beginthread(ThreadClass::ThreadProc, 0, 0); } }; }
|
|