中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++音樂播放按鈕如何封裝

發布時間:2022-08-16 09:42:26 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“C++音樂播放按鈕如何封裝”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++音樂播放按鈕如何封裝”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1、準備工作:音樂、開發工具VS stdio及圖形庫工具

2、設計思路:先加載音樂,再通過點擊不同的按鈕執行不同的操作(播放音樂,暫停音樂、繼續播放、結束播放)

繪制按鈕我們通過一個按鈕button類來操作,這樣數據會存在一些必要的訪問數據權限,并可以將多個函數聲明寫在同一個類中,調用只需使用 " 類名.函數名 “即可調用里面的函數

按鈕類頭文件:-----button.h

#include "graphics.h"
#include <iostream>
#include <string>
using namespace std;
class Button
{
public:
	void Show();
	void InitButton(int xx, int yy, int ww, int hh, COLORREF color, string text);
	bool InButton(ExMessage message);
	bool OnClickButton(ExMessage message);
private:
	int x;
	int y;
	int w;
	int h;
	COLORREF curColor;
	COLORREF oldColor;
	string str;
};

寫類中函數的定義(即寫函數的函數體) ----button.cpp

注意:在類外寫類內部函數的定義時,需要加類名限定

1、初始化按鈕的一些參數:如按鈕的長寬高、顏色和按鈕上的文字內容:

void Button::InitButton(int xx, int yy, int ww, int hh, COLORREF color, string text)
{
    x = xx;
    y = yy;
    w = ww;
    h = hh;
    curColor = color;
    oldColor = color;
    str = text;
}

2、繪制矩形按鈕:

void Button::Show()
{
    //矩形框
    setfillcolor(curColor);
    solidrectangle(x, y, x + w, y + h);
    //文字
    settextstyle(15, 0, "FZZJ-XHFTJW.TTF");
    //1、求文字所在矩形的寬高
    int textw = textwidth(str.c_str());
    int texth = textheight(str.c_str());
    //2、求h2 w1
    //(w - textw) / 2   <=> w1
    //(h - texth) / 2   <=> h2
    //3、求出文字所在矩形左上角的坐標
    int xx = x+(w - textw) / 2;
    int yy = y+(h - texth) / 2;
    setbkmode(TRANSPARENT);
    settextcolor(BLACK);
    outtextxy(xx, yy, str.c_str());
}

注意:這里有一個文字在矩形框中居中顯示的:

如何將文字在矩形框中居中顯示?

如圖:要使文字在矩形中居中顯示: h2=h3 ; w1=w2

C++音樂播放按鈕如何封裝

步驟:

1、求出文字的 高(textwidth(文字)) 與 寬(text(文字)) 返回的是一個整數

2、求出h2、w1的值

3、外矩形的寬高分別加上w1,h2就是需要繪制里面文字所在的矩形框的左上角的坐標。繪制一個矩形只需直到矩形左上角的坐標和矩形的寬高即可繪制繪制一個矩形。

4、判斷鼠標是否在按鈕中---在矩形中矩形顯示一種顏色,不在顯示另外一種顏色

bool Button::InButton(ExMessage message)
{
    if (message.x >= x && message.x <= x + w && message.y >= y && message.y <= y + h) 
    {
        curColor = RGB(236, 244, 255);
        return true;
    }
    curColor = oldColor;
    return false;
}

5、判斷鼠標是否點擊矩形框

bool Button::OnClickButton(ExMessage m)
{
    if (InButton(m) && m.message == WM_LBUTTONDOWN) 
    {
        return true;
    }
    return false;
}

主函數---main

加載音樂,繪制按鈕,按鈕消息的制作,顯示界面等

#include "button.h"
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
int main() 
{
	initgraph(800, 600);
	IMAGE mm;
	loadimage(&mm, "mm.jpg",800,600);
	Button* play = new Button;
	play->InitButton(5, 5, 100, 25, RGB(204, 213, 240), "播放(play)");
	Button* pause = new Button;
	pause->InitButton(110, 5, 100, 25, RGB(204, 213, 240), "暫停(pause)");
	Button* resume = new Button;
	resume->InitButton(215, 5, 100, 25, RGB(204, 213, 240), "繼續(resume)");
	Button* stop = new Button;
	stop->InitButton(320, 5, 100, 25, RGB(204, 213, 240), "停止(stop)");
	ExMessage m;
	BeginBatchDraw();
	while (1) 
	{
		putimage(0, 0, &mm);
		peekmessage(&m);
		play->Show();
		if (play->OnClickButton(m)) 
		{
			mciSendString("open 1.mp3", 0, 0, 0);
			mciSendString("play 1.mp3", 0, 0, 0);
		}
		pause->Show();
		if (pause->OnClickButton(m)) 
		{
			mciSendString("pause 1.mp3", 0, 0, 0);
		}
		resume->Show();
		if (resume->OnClickButton(m))
		{
			mciSendString("resume 1.mp3", 0, 0, 0);
		}
		stop->Show();
		if (stop->OnClickButton(m))
		{
			mciSendString("close 1.mp3", 0, 0, 0);
		}
		FlushBatchDraw();
	}
	EndBatchDraw();
	closegraph();
	return 0;
}

讀到這里,這篇“C++音樂播放按鈕如何封裝”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

镇江市| 叙永县| 南部县| 卓资县| 道孚县| 驻马店市| 石柱| 龙里县| 图们市| 澳门| 台州市| 济阳县| 四川省| 五台县| 平阳县| 铅山县| 霞浦县| 纳雍县| 石屏县| 神木县| 安图县| 鄂托克前旗| 沈丘县| 绥阳县| 吉木萨尔县| 延川县| 区。| 临邑县| 图们市| 湘潭县| 长葛市| 香河县| 六盘水市| 濉溪县| 阿拉善左旗| 宝鸡市| 兴化市| 武汉市| 巴青县| 龙江县| 金溪县|