49、wxWidgets之wxPopupTransientWindow

#include <wx/wx.h>
#include <wx/popupwin.h>
class Simple:public wxFrame
{
public:
    Simple(const wxString& title);

private:
    void OnRightDown(wxMouseEvent& event);

    wxPopupTransientWindow* mMyPopup;
};
 

 


Simple::Simple(const wxString& title)
    :wxFrame(NULL,wxID_ANY,title,wxPoint(-1,-1),wxSize(640,480))
{
    mMyPopup = new wxPopupTransientWindow(this,wxBORDER_SIMPLE|wxPU_CONTAINS_CONTROLS|wxBG_STYLE_TRANSPARENT);
    mMyPopup->SetBackgroundColour(this->GetBackgroundColour());

    auto sizer = new wxBoxSizer(wxVERTICAL);
    {
        wxArrayString choices;
        choices.Add("Fob");
        choices.Add("Bar");

        auto myComboBox = new wxComboBox(mMyPopup,-1,wxEmptyString,wxPoint(-1,-1),wxSize(-1,-1)
                                         ,choices,wxCB_READONLY);
        auto myLabel = new wxStaticText(mMyPopup,-1,wxT("请选择"),wxPoint(-1,-1),wxSize(-1,-1));
        myLabel->SetBackgroundColour(this->GetBackgroundColour());

        sizer->Add(myLabel);
        sizer->Add(myComboBox,1,wxALL|wxEXPAND,0);
    }

    mMyPopup->SetSizerAndFit(sizer);

    Bind(wxEVT_RIGHT_DOWN,Simple::OnRightDown,this);

//    SetCursor(wxCursor(wxCURSOR_CROSS));

    Centre();
}

void Simple::OnRightDown(wxMouseEvent& event)
{

//    wxWindow * window = dynamic_cast<wxWindow *>(event.GetEventObject());
//    if (nullptr == window)
//        return;

//    mMyPopup->SetPosition(window->ClientToScreen(event.GetPosition()));
    mMyPopup->SetPosition(wxWindow::ClientToScreen(event.GetPosition()));
    mMyPopup->Popup();


}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值