1
2 #include <Application.h>
3 #include <View.h>
4 #include <Window.h>
5
6
7 class MouseView : public BView {
8 public:
9 MouseView(BRect frame, bool noHistory);
10 ~MouseView();
11
12 virtual void AttachedToWindow();
13 virtual void MouseMoved(BPoint point, uint32 transit,
14 const BMessage *message);
15 virtual void MouseDown(BPoint point);
16 virtual void MouseUp(BPoint point);
17
18 private:
19 bool fNoHistory;
20 };
21
22
MouseView(BRect frame,bool noHistory)23 MouseView::MouseView(BRect frame, bool noHistory)
24 : BView(frame, "MouseView", B_FOLLOW_ALL, B_WILL_DRAW),
25 fNoHistory(noHistory)
26 {
27 SetViewColor(255, 255, 200);
28 if (noHistory)
29 SetHighColor(200, 0, 0);
30 else
31 SetHighColor(0, 200, 0);
32 }
33
34
~MouseView()35 MouseView::~MouseView()
36 {
37 }
38
39
40 void
AttachedToWindow()41 MouseView::AttachedToWindow()
42 {
43 if (fNoHistory)
44 SetEventMask(0, B_NO_POINTER_HISTORY);
45 }
46
47
48 void
MouseDown(BPoint point)49 MouseView::MouseDown(BPoint point)
50 {
51 SetMouseEventMask(0, B_NO_POINTER_HISTORY);
52 SetHighColor(0, 0, 200);
53 }
54
55
56 void
MouseUp(BPoint point)57 MouseView::MouseUp(BPoint point)
58 {
59 if (fNoHistory)
60 SetHighColor(200, 0, 0);
61 else
62 SetHighColor(0, 200, 0);
63 }
64
65
66 void
MouseMoved(BPoint point,uint32 transit,const BMessage * message)67 MouseView::MouseMoved(BPoint point, uint32 transit, const BMessage *message)
68 {
69 FillRect(BRect(point - BPoint(1, 1), point + BPoint(1, 1)));
70 snooze(25000);
71 }
72
73
74 // #pragma mark -
75
76
77 int
main(int argc,char ** argv)78 main(int argc, char** argv)
79 {
80 BApplication app("application/x-vnd.Simon-NoPointerHistory");
81
82 BWindow* window = new BWindow(BRect(100, 100, 700, 400), "Window",
83 B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE);
84 window->AddChild(new MouseView(BRect(10, 10, 295, 290), true));
85 window->AddChild(new MouseView(BRect(305, 10, 590, 290), false));
86 window->Show();
87
88 app.Run();
89 return 0;
90 }
91
92