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 + -
显示快捷键?