unit2.cpp

来自「本书《C++Builder与WindowsAPI经典范例》附含配套光盘包括132」· C++ 代码 · 共 52 行

CPP
52
字号
//---------------------------------------------------------------------------
//目的:鼠标拖曳刻度组件(TrackBar)箭头,实时显现箭头位置的提示窗口
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{//调整TrackBar位置、尺寸
TrackBar1->Width = ClientWidth;
TrackBar1->Top = (ClientHeight-TrackBar1->Height)/2;
TrackBar1->Left = 0;
TrackBar1->Max = 50;
//程序开始时,替换成自定义信息处理
OldTrackBarWP = TrackBar1->WindowProc;
TrackBar1->WindowProc = NewTrackBarWP;
//新建一小提示窗口
HintWindow = new THintWindow(this);
//突显TrackBar与小提示窗口
Color = (TColor)RGB(200,255,200);
}
//---------------------------------------------------------------------------
//程序结束时,恢复原有信息处理
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TrackBar1->WindowProc = OldTrackBarWP;
delete HintWindow;
}
//---------------------------------------------------------------------------
//自定义信息处理
void __fastcall TForm1::NewTrackBarWP(TMessage &Msg)
{//若鼠标单击时,即捕捉住TrackBar
if(Msg.Msg == WM_LBUTTONDOWN)
  {
  ::SetCapture(TrackBar1->Handle);
  }
//若移动鼠标时且单击左键状态,则显现提示窗口
if(Msg.Msg == WM_MOUSEMOVE)
  {
  POINT P;
  ::GetCursorPos(&P);
  if(::GetCapture() == TrackBar1->Handle)
    {
    HintWindow->Invalidate();//更新窗口,引发WM_PAINT信息
    //结合显示在提示窗口的字符串
    AnsiString str = "

⌨️ 快捷键说明

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