⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getmouse.cpp

📁 《C++ Builder 5技术内幕》一书附带的程序源代码
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <TypInfo.hpp>
#pragma hdrstop

#include "GetMouse.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormCapturingMouse *FormCapturingMouse;
//---------------------------------------------------------------------------
__fastcall TFormCapturingMouse::TFormCapturingMouse(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::FormClick(TObject *Sender)
{
  MessageDlg( "朋友们好!", mtInformation, TMsgDlgButtons() << mbOK, 0 );
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  if (Shift.Contains(ssRight))
  {
    Canvas->Brush->Style = bsClear;
    Canvas->TextOut( X, Y, "You clicked here." );
  }
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::FormKeyDown(TObject *Sender,
      WORD &Key, TShiftState Shift)
{
  MessageDlg( Key, mtInformation, TMsgDlgButtons() << mbOK, 0 );
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::FormKeyPress(TObject *Sender,
      char &Key)
{
  AnsiString S("您单击了键 " + AnsiString(Key));
  MessageDlg(S, mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::CheckStateInfo(TShiftState Shift)
{
  CheckBoxShiftKey->Checked    = false;
  CheckBoxControlKey->Checked  = false;
  CheckBoxLeftButton->Checked  = false;
  CheckBoxRightButton->Checked = false;
  if( Shift.Contains( ssShift ) )
  {
    CheckBoxShiftKey->Checked = true;
    MemoInfo->Lines->Add( "Shift Key is in." );
  }
  if( Shift.Contains( ssCtrl ) )
  {
    CheckBoxControlKey->Checked = true;
    MemoInfo->Lines->Add( "Ctrl Key is in." );
  }
  if( Shift.Contains( ssLeft ) )
  {
    CheckBoxLeftButton->Checked = true;
    MemoInfo->Lines->Add( "Left Button is in." );
  }
  if( Shift.Contains( ssRight ) )
  {
    CheckBoxRightButton->Checked = true;
    MemoInfo->Lines->Add( "Right Button is in." );
  }
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::PanelTestMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  CheckStateInfo( Shift );
}
//---------------------------------------------------------------------------

void __fastcall TFormCapturingMouse::ButtonUnionClick(TObject *Sender)
{
  OperateSet( Sender );
}
//---------------------------------------------------------------------------

void __fastcall TFormCapturingMouse::ButtonIntersectionClick( TObject *Sender)
{
  OperateSet( Sender );
}
//---------------------------------------------------------------------------

void __fastcall TFormCapturingMouse::ButtonDifferenceClick(TObject *Sender)
{
  OperateSet( Sender );
}
//---------------------------------------------------------------------------
void __fastcall TFormCapturingMouse::OperateSet( TObject *Sender )
{
  AnsiString Operators[3] = {"+", "*", "-"};
  MemoInfo->Lines->Add( "---------------------" );
  TShiftState LeftRightShift;
  LeftRightShift << ssLeft << ssRight << ssShift;
  MemoInfo->Lines->Add( "Set LeftRightShift contains: ssLeft, ssRight, and ssShift." );
  TShiftState LeftCtrl;
  LeftCtrl << ssLeft << ssCtrl;
  MemoInfo->Lines->Add( "Set LeftCtrl contains: ssLeft, and ssCtrl." );
  TShiftState FinalState;
  switch( dynamic_cast< TButton * >( Sender )->Tag )
  {
    case 0:  // Union
      FinalState = LeftRightShift + LeftCtrl;
      break;
    case 1:  // Intersection
      FinalState = LeftRightShift * LeftCtrl;
      break;
    case 2:  // Difference
      FinalState = LeftRightShift - LeftCtrl;
      break;
  }
  CheckStateInfo( FinalState );
  AnsiString AfterOperation = "After the last operation ";
  AfterOperation += Operators[ dynamic_cast< TButton * >( Sender )->Tag ];
  MemoInfo->Lines->Add( AfterOperation );
  MemoInfo->Lines->Add( "---------------------" );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -