简单wxWidgets有关问题,怎么程序控制wxComboBox弹出列表框
简单wxWidgets问题,如何程序控制wxComboBox弹出列表框;
代码如下:
代码稍微有点多,忘谅解;因wx的文档资源较少,最近自学,遇到小问题一个,还望****上面的高手解答,先谢过;
程序运行很简单,我希望
1、按下按钮时焦点自动置于wxComboBox上:
这个简单:m_combobox1->SetFocus();即可。
2、自动弹出wxComboBox的下拉列表框,如图所示:
我翻遍了wxComboBox的方法,也没找到一个手动控制下拉列表的api,wxComboBox继承自wxControlWithItems,这个根类也没有这样的方法,google了一下听说与wxEVT_LEFT_DOWN有关,可没思路,不知道如何整,如果有人知道,还请告知,谢谢。
------解决方案--------------------
试试能不能用wxPostEvent人工发一个wxEVT_LEFT_DOWN过去。
代码如下:
- C/C++ code
#include "wx/wx.h" class GUIFrame : public wxFrame { public: wxButton* m_button; // Virtual event handlers, overide them in your derived class wxComboBox* m_comboBox1; GUIFrame(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("wxWidgets Application Template"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(485, 244), long style = wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL); virtual void OnButton(wxCommandEvent& event); ~GUIFrame() {} }; void GUIFrame::OnButton(wxCommandEvent& event) { m_comboBox1->SetFocus(); } GUIFrame::GUIFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style) { wxBoxSizer* bSizer1 = new wxBoxSizer(wxHORIZONTAL); bSizer1->Add(0, 0, 1, wxEXPAND, 5); //space const int wxID_BUTTON = 65530; const int wxID_COMBOBOX = 65531; m_button = new wxButton(this, wxID_BUTTON, wxT("Press Me...")); bSizer1->Add(m_button, 2, wxALL | wxALIGN_CENTER_VERTICAL, 5); m_comboBox1 = new wxComboBox(this, wxID_COMBOBOX); m_comboBox1->Append(wxT("1->Item1")); m_comboBox1->Append(wxT("2->Item2")); m_comboBox1->Append(wxT("3->Item3")); m_comboBox1->SetSelection(0); bSizer1->Add(m_comboBox1, 2, wxALL | wxALIGN_CENTER_VERTICAL, 5); bSizer1->Add(0, 0, 1, wxEXPAND, 5); //space this->SetSizer(bSizer1); this->Layout(); // Connect Events this->Connect(wxID_BUTTON, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GUIFrame::OnButton)); } class comboBoxApp : public wxApp { public: virtual bool OnInit(); }; bool comboBoxApp::OnInit() { wxFrame* frame = new GUIFrame(0L); frame->Show(); return true; } IMPLEMENT_APP(comboBoxApp);
代码稍微有点多,忘谅解;因wx的文档资源较少,最近自学,遇到小问题一个,还望****上面的高手解答,先谢过;
程序运行很简单,我希望
1、按下按钮时焦点自动置于wxComboBox上:
这个简单:m_combobox1->SetFocus();即可。
2、自动弹出wxComboBox的下拉列表框,如图所示:
我翻遍了wxComboBox的方法,也没找到一个手动控制下拉列表的api,wxComboBox继承自wxControlWithItems,这个根类也没有这样的方法,google了一下听说与wxEVT_LEFT_DOWN有关,可没思路,不知道如何整,如果有人知道,还请告知,谢谢。
------解决方案--------------------
试试能不能用wxPostEvent人工发一个wxEVT_LEFT_DOWN过去。