首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder 設計動態網頁風格按鈕

     編輯:關於C++

使用 SpeedButton + 位圖切換 + 音效實現滑鼠進入亮起效果

模仿網頁按鈕:滑鼠移入時切換為彩色圖片並播放音效,移出恢復灰階圖片。利用 TSpeedButton 的 Glyph 屬性切換圖片,SndPlaySound 播放記憶體中的 WAV 音效。

資源檔 (app.rc)

crush WAV crush.wav
start BITMAP one.bmp      // 正常狀態 (灰階)
start1 BITMAP two.bmp     // 滑鼠進入狀態 (彩色)

編譯資源:brcc32 app.rc 產生 app.res,專案加入 {$R app.res} 或直接加入 app.rc。

表單建構 (OnCreate)

Graphics::TBitmap *one, *two;
char *chWavHandle;

one = new Graphics::TBitmap();
two = new Graphics::TBitmap();
one->Handle = LoadBitmap(HInstance, "one");
two->Handle = LoadBitmap(HInstance, "two");

HRSRC hRes = FindResource(HInstance, "crush", "WAV");
HGLOBAL hGlob = LoadResource(HInstance, hRes);
chWavHandle = (char*)LockResource(hGlob);

StartSpeedButton->Glyph->Assign(two); // 初始顯示灰階

表單銷毀釋放資源 (OnDestroy)

delete chWavHandle; delete two; delete one;

狀態變數與滑鼠事件

bool blStart = true; // true 表示可亮起

// SpeedButton OnMouseMove
void __fastcall TForm1::StartSpeedButtonMouseMove(TObject *Sender,
    TShiftState Shift, int X, int Y)
{
    if (blStart) {
        StartSpeedButton->Glyph->Assign(one); // 切換彩色
        SndPlaySound(chWavHandle, SND_MEMORY | SND_SYNC); // 播放音效
        blStart = false;
    }
}

// Form OnMouseMove (偵測滑鼠移出按鈕)
void __fastcall TForm1::FormMouseMove(TObject *Sender,
    TShiftState Shift, int X, int Y)
{
    if (!blStart) {
        StartSpeedButton->Glyph->Assign(two); // 恢復灰階
        blStart = true;
    }
}

SpeedButton 屬性設定

  • Caption 空白
  • Cursor = crHandPoint (手型游標)
  • Flat = true (扁平外觀)
  • ShowHint = true

注意

  • 外層容器 (Form) 的 OnMouseMove 必須有足夠區域覆蓋按鈕周圍,否則滑鼠快速移出可能漏過事件;可再加最外層容器雙重保險。
  • 需包含 #include <mmsystem.h> 並連結 winmm.lib (BCB 專案自動連結)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved