04wxWidgets多线程
来源:互联网 发布:淘宝描述不符怎么处理 编辑:程序博客网 时间:2024/05/17 08:39
#include "wx/wx.h"#include "wx/caret.h"// TicketThreadclass TicketThread : public wxThread {public: TicketThread(const wxString& name, wxTextCtrl* text_ctrl) : name_(name) , text_ctrl_(text_ctrl) { } virtual void* Entry(); wxString name() { return name_; }private: static int counts_;private: static wxCriticalSection critical_section_;private: wxString name_; wxTextCtrl* text_ctrl_;};int TicketThread::counts_ = 50;wxCriticalSection TicketThread::critical_section_;void* TicketThread::Entry() { while (1) { wxCriticalSectionLocker locker(critical_section_); if (counts_ <= 0) { text_ctrl_->AppendText(wxT("Sell up!\n")); break; } else { text_ctrl_->AppendText(name_ + " : " + wxString::Format(wxT("%d"), counts_) + wxT("\n")); counts_--; } wxThread::Sleep(500); } return NULL;}// MainFrameclass MainFrame : public wxFrame { wxDECLARE_EVENT_TABLE();public: MainFrame() : text_ctrl1_(NULL) , text_ctrl2_(NULL) , text_ctrl3_(NULL) { } bool Create(const wxString& title) { wxFrame::Create(NULL, wxID_ANY, title); CreateControls(); SellTicket(); return true; }private: void SellTicket(); TicketThread* CreateThread(const wxString& name, wxTextCtrl* text_ctrl); void CreateControls();private: wxTextCtrl* text_ctrl1_; wxTextCtrl* text_ctrl2_; wxTextCtrl* text_ctrl3_;};wxBEGIN_EVENT_TABLE(MainFrame, wxFrame)wxEND_EVENT_TABLE()// Appclass App : public wxApp {public: virtual bool OnInit() override; virtual int OnExit() override;};wxDECLARE_APP(App);wxIMPLEMENT_APP(App);//---------------------------------------------------------TicketThread* MainFrame::CreateThread(const wxString& name, wxTextCtrl* text_ctrl) { TicketThread* ticket_thread = new TicketThread(name, text_ctrl); if (ticket_thread->Create() != wxTHREAD_NO_ERROR) { wxLogError(wxT("Can't create thread!")); } return ticket_thread;}void MainFrame::CreateControls() { text_ctrl1_ = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxHSCROLL); text_ctrl2_ = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxHSCROLL); text_ctrl3_ = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxHSCROLL); wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); hsizer->Add(text_ctrl1_, 1, wxEXPAND); hsizer->AddSpacer(20); hsizer->Add(text_ctrl2_, 1, wxEXPAND); hsizer->AddSpacer(20); hsizer->Add(text_ctrl3_, 1, wxEXPAND); SetSizer(hsizer);}void MainFrame::SellTicket() { TicketThread* window1 = CreateThread(wxT("Window1"), text_ctrl1_); TicketThread* window2 = CreateThread(wxT("Window2"), text_ctrl2_); TicketThread* window3 = CreateThread(wxT("Window3"), text_ctrl3_); window1->Run(); window2->Run(); window3->Run();}bool App::OnInit() { wxApp::OnInit(); MainFrame* main_frame = new MainFrame(); main_frame->Create(wxT("Thread")); main_frame->Show(true); return true;}int App::OnExit() { wxApp::OnExit(); return 0;}
阅读全文
0 0
- 04wxWidgets多线程
- 多线程小测(二)(wxWidgets)
- wxwidgets编写多线程程序--wxThread
- 多线程小测(一)(wxWidgets)
- wxWidgets
- wxwidgets
- wxWidgets
- wxWidgets
- wxWidgets
- wxWidgets
- wxWidgets
- Ubuntu14.04下安装codeblocks+wxWidgets
- 【wxWidgets】wxWidgets特点概览
- ubuntu14.04中使用wxWidgets,中文无法正常显示
- Why wxWidgets?
- wxWidgets介绍
- WxWidgets 初探
- wxWidgets介绍
- 大数据个人笔记(一)
- sqlmap 随笔 羽翼sqlmap学习笔记
- 随机访问流and合并流and序列化流andPropertoes
- wireshark抓包图解 TCP三次握手/四次挥手详解
- MVC各个 部分有哪些技术实现
- 04wxWidgets多线程
- Android中的Window 如何管理?
- 浅谈Java的Fork/Join并发框架
- Java密码学
- Unity3D实时显示FPS(移动端测试神器)
- Java基础之双列集合Map
- Machine Learning In Action
- 深入学习Linux Device Tree
- 图解TCP协议中的三次握手和四次挥手