C++;公共和私人课程,有屏幕运动? 我被困了,我需要帮助,我不能把所有的文件都放在这里,因为这是一个有将近20个C++文件的项目。但基本上都归结为屏幕上的动作

C++;公共和私人课程,有屏幕运动? 我被困了,我需要帮助,我不能把所有的文件都放在这里,因为这是一个有将近20个C++文件的项目。但基本上都归结为屏幕上的动作,c++,screen,private,public,C++,Screen,Private,Public,-类“MyClass”是屏幕,它有一个调用函数的构造函数。屏幕底部有一个小盒子。当您按下、向上或移动鼠标时,它会发送一个信号或“事件”,并调用下面三个函数之一 -功能mouseMotion,当您移动鼠标时,它应该将小框移动到鼠标指向的位置,类似于拖动。当您按下鼠标时,该功能应该处于活动状态,比如说当鼠标按下时 -函数mouseButtonDown,当你按下鼠标时,小框应该从屏幕底部移动到光标所在的位置。 -函数mouseButtonUp,当您松开鼠标时,将调用此函数,小盒子的所有移动都应停止 现

-类“MyClass”是屏幕,它有一个调用函数的构造函数。屏幕底部有一个小盒子。当您按下、向上或移动鼠标时,它会发送一个信号或“事件”,并调用下面三个函数之一

-功能mouseMotion,当您移动鼠标时,它应该将小框移动到鼠标指向的位置,类似于拖动。当您按下鼠标时,该功能应该处于活动状态,比如说当鼠标按下时 -函数mouseButtonDown,当你按下鼠标时,小框应该从屏幕底部移动到光标所在的位置。 -函数mouseButtonUp,当您松开鼠标时,将调用此函数,小盒子的所有移动都应停止

现在的代码是,每当我把鼠标放到屏幕上时,小盒子会立即跳转并开始跟随鼠标。但是我们的教授希望我们改变功能,这样当我在屏幕上介绍moue时,什么都不会发生。当我点击鼠标时,盒子就会到达鼠标所在的位置。如果我点击鼠标当我移动鼠标时按住鼠标,盒子应该一直跟着鼠标。最后,如果我松开鼠标,盒子需要保持在我松开鼠标的位置

我是c语言的新手,你会用什么算法++

using namespace WALY;

class MyClass : public Frame {
   private:
   void(*switchAction) (void);

   Frame* box;

   static void mouseButtonDown (Frame* f, const Event* e);
   static void mouseButtonUp (Frame* f, const Event* e);
   static void mouseMotion (Frame* f, const Event* e);


   public:
   MyClass (Frame* parent, void (*switchFunc) (void));
   void activate (void);
   void deactivate (void);

};


MyClass::MyClass(Frame *parent, void (*switchFunc)(void)) : Frame (parent),       switchAction (switchFunc)
{
box = new Frame (this, 250, 700);     // creating the box on the screen
box->setAlign (ALIGN_C);                              
Rect boxRect;
boxRect.x = boxRect.y = 0;
boxRect.w = 80;
boxRect.h = 50;
box->setScrollRect (boxRect);
box->useSolidBackground (0x808080);


setCallbackFunc (MOUSE_DOWN, mouseButtonDown);        // registering functions into wally library
setCallbackFunc (MOUSE_UP, mouseButtonUp);
setCallbackFunc (MOUSE_MOTION, mouseMotion);

deactivate ();

}

void MyClass::activate(void)
{
   setActive(true);
   setVisible(true);
}

void MyClass::deactivate(void)
{
   setVisible(false);
   setActive(false);
}
void
MyClass::mouseMotion (Frame* f, const Event* e)
{
   MyClass* wywtcyc = (MyClass*)f;
   wywtcyc->box->setX (e->motion.x);
   wywtcyc->box->setY (e->motion.y);
}

 void MyClass::mouseButtonDown (Frame* f, const Event* e)
{
  // (e->button.x)
}

void MyClass::mouseButtonUp (Frame* f, const Event* e)
{
}

逻辑如下:

声明变量:

  • mouseIsDown=False
  • 释放=假
在情感上:

if (mouseIsDown && ! released) {
    // your current code
}
在mouseButtonDown中:

if (mouseIsDown) {
    released = True;
} else {
    mouseIsDown = True;
    released = False;
}
在鼠标按钮中:

if (mouseIsDown) {
    mouseIsDown = False;
    released = True;
}

你如何声明变量“释放”和“减震”,它们是整数还是其他什么,它们是布尔变量。在C++中,你可以声明它们:BoOL MouStReStay=真;