1

所以我有一个从 wxPanel 继承的 MyPanel 类:

 class MyPanel : public wxPanel
 {
       public:
          MyPanel(wxWindow* parent) : wxPanel(parent){}
          void OnMouseMove(wxMouseEvent& event);
       private:
          DECLAER_EVENT_TABLE()
  };

和下面定义的另一个主要 wxframe:

 class mainFrame : public wxFrame
 {
       ...
       private:
          ...
          MyPanel* myPanel;
          ...
          wxStaticText* StaticText1;
          ...
 };

StaticText1 最终将被分配为 myPanel 的子项。所以我想在 OnMouseMove() 方法中更新鼠标光标的坐标

我想知道如何访问 StaticText1 并更新内容。

4

3 回答 3

1

使用朋友声明,如下所示:

class mainFrame : public wxFrame
{
  friend class MyPanel;
  ...
};
于 2012-07-29T19:36:47.427 回答
0

您可以在 MyPanel 中定义一个成员,并在需要时将 StaticText1 分配给它。在 OnMouseMove 检查中,StaticText1 是否为 NULL。

 class MyPanel : public wxPanel
  {
        public:
           MyPanel(wxWindow* parent) : wxPanel(parent){}
           void OnMouseMove(wxMouseEvent& event) { if (StaticText1) { /* do something */ } ;
           void SetStaticText1(wxStaticText* txt) { StaticText1 = txt;}
        private:
           DECLAER_EVENT_TABLE()
           wxStaticText* StaticText1;

   };
于 2012-07-29T19:35:31.203 回答
0

从编程的角度来看,您可以使用朋友解决方案。但是从逻辑上讲,如果 wxStaticText* StaticText1 将由 MyPanel 作为父级,并且主要从 MyPanel 的成员函数之一中引用/更新。那么 wxStaticText 最好在 MyPanel 中而不是在 mainFrame 中声明和定义。

于 2012-07-30T16:10:33.980 回答