桌面開滿玫瑰花小程序之小小總結


最近在CSDN首頁上看到一個小程序,居然下載量已經快達到2000(http://download.csdn.net/detail/ligongda405/3498086)就這個原因,也得下下來瞄一下。看了之后,感覺創意確實不錯,但是灰常灰常多的csdner反映:1.沒有源碼2.能再創新點就好。

終於功夫不負有心人,終於找到了資料:http://blog.csdn.net/xuezhimeng/article/details/3445820以及源碼下載http://download.csdn.net/detail/xuezhimeng/837221,另外還得感謝這篇帖子:給了最初的思路(http://topic.csdn.net/u/20111102/20/d1fb35df-eda6-4004-b9a3-ced34855992b.html)以及這篇帖子:講解了播放mp3的一種簡單方法(http://topic.csdn.net/t/20031201/09/2512718.html)

我也小改了一下這個程序:1.用這么多花畫心形,從外到里一層一層的畫;2.同時播放mp3格式的音頻文件(注意生成release版時需把你要同時播放的mp3與exe放在同一目錄下);3.心形畫完后,顯示祝福的文字

        此版本源碼下載地址:http://download.csdn.net/detail/nanfeiyannan/3846819

ps:記得生成release版本時,把所要播放的背景音樂與exe放在同一目錄下;同時希望各位同仁有好的創意也能不吝分享。。。

小小收獲如下:

1.strcat函數用法

strcat(a,b)
a,b都是char *型,strcat就是把b指向的字符串接到a指向的字符串的尾部,並返回a,以便於函數連寫.
2.播放mp3的一種簡單方法:

播放MP3音樂 

MIDI音樂的問題是對聲卡的依賴性過大,好聲卡和差聲卡的播放效果實在相差太遠。WAV音樂雖然絕對足夠精確,但占用的空間之大不可小視。MP3恐怕是一個較好的解決方案。值得注意的是,播放MP3並不需要DirectX   Audio,需要的是DirectShow。所以,我們要#include   <dshow.h> ,並在工程中加入strmiids.lib。
此處需下載DX9SDK(http://download.csdn.net/detail/nanfeiyannan/3846809)下載后把“目錄\Include”及“目錄\Lib”添加到VC的源目錄中就可以使用。
2.1調入MP3文件: 
下面把初始化DirectShow和調入MP3合起來說說吧。首先,我們要定義三個對象,其中IGraphBuilder*類型的可以認為是媒體播放設備,IMediaControl*類型的變量負責媒體的播放控制,而IMediaPosition*類型的變量負責媒體的播放位置設定。

IGraphBuilder*   pGBuilder;
IMediaControl*   pMControl;
IMediaPosition*   pMPos;
CoInitialize(NULL);   //初始化COM
//創建各個對象
CoCreateInstance(CLSID_FilterGraph,   NULL,
CLSCTX_INPROC,   IID_IGraphBuilder,   (void**)&pGBuilder);
pGBuilder-> QueryInterface(IID_IMediaControl,   (void**)&pMControl);
pGBuilder-> QueryInterface(IID_IMediaPosition,   (void**)&pMPos);

CHAR   strSoundPath[MAX_PATH];   //存儲音樂所在路徑
WCHAR   wstrSoundPath[MAX_PATH];   //存儲UNICODE形式的路徑
GetCurrentDirectory(MAX_PATH,   strSoundPath);
strcat(strSoundPath,   "\\Sounds\\ ");
strcat(strSoundPath,   "a.mp3 ");   //假設要播放的是Sounds子目錄下的a.mp3
MultiByteToWideChar(CP_ACP,   0,   strSoundPath,   -1,wstrSoundPath,   MAX_PATH);
pGBuilder-> RenderFile(wstrSoundPath,   NULL);   //調入文件

2.2播放MP3文件: 
播放MP3的方法十分簡單:
pMPos-> put_CurrentPosition(0);   //移動到文件頭
pMControl-> Run();   //播放

2.3停止播放和釋放對象
最后,我們要停止播放音樂並釋放各個對象:
pMControl-> Stop();   //停止播放
//釋放對象
SAFE_RELEASE(pMControl);
SAFE_RELEASE(pMPos);
SAFE_RELEASE(pGBuilder);
CoUninitialize();   //釋放COM 
3.顯示文字:

char buf1[100]="祝";
char buf2[100]="xxx";
char buf3[100]="xxxxxxxx";
HDC hdc2=::GetDC(NULL);
int OldBkMode=::SetBkMode(hdc2,TRANSPARENT);
HFONT myFont;
myFont=CreateFont(150,0,0,0,FW_BLACK,FALSE,FALSE,FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"楷體");
SelectObject(hdc2,myFont); //選入字體
SetTextColor(hdc2,RGB(255,64,64)); 
TextOut(hdc2,630,400,buf1,strlen(buf1));
Sleep(2000);
SetTextColor(hdc2,RGB(138,43,226)); 
TextOut(hdc2,500,250,buf2,strlen(buf2));
Sleep(2000);
SetTextColor(hdc2,RGB(255,0,255)); 
TextOut(hdc2,180,100,buf3,strlen(buf3));
ReleaseDC(NULL,hdc2);



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: