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

Web 版本檢查與 MFC 應用程式音效整合完整實作

     編輯:關於VC++

第一部分:HTTP 版本檢查 (CWebVersion)

背景

原版使用 FTP 下載版本檔,但許多虛擬主機禁止匿名 FTP。改用 HTTP 更通用,適合純文字版本檔傳輸。

使用方式

if (CWebVersion::Online()) {
    CWebVersion webver(_T("www.mysite.com"));
    if (webver.ReadVersion(_T("myversion.txt"))) {
        // 比對 webver.dwMajorVersion / dwMinorVersion
    }
}

核心實作 (MFC WinInet)

CInternetSession session(_T("MySession"));
CHttpConnection* pConn = session.GetHttpConnection(_T("www.dilascia.com"), INTERNET_DEFAULT_HTTP_PORT);
CHttpFile* pFile = pConn->OpenRequest(CHttpConnection::HTTP_VERB_GET, _T("TraceWinVer.txt"));
pFile->SendRequest();

DWORD dwStatus; pFile->QueryInfoStatusCode(dwStatus);  // 200=成功, 404=不存在
// Read 讀取內容,sscanf 解析 "Mhi,Mlo,mhi,mlo" 格式

.NET 版本 (HttpWebRequest)

HttpWebRequest* req = dynamic_cast(WebRequest::Create(S"https://www.site.com/ver.txt"));
req->Timeout = 5000;
HttpWebResponse* resp = dynamic_cast(req->GetResponse());
StreamReader* strm = new StreamReader(resp->GetResponseStream(), Encoding::UTF8);
String* content = strm->ReadToEnd(); strm->Close();

實務提醒

  • 副檔名 .dat 可能被主機商擋下 (404),建議用 .txt
  • 版本檔格式:四個 WORD 以逗號分隔

第二部分:MFC 應用程式加入音效 (CSoundMgr)

PlaySound API 基礎

PlaySound(_T("woofwoof.wav"), NULL, SND_NODEFAULT);  // 檔案播放
PlaySound(_T("AppExit"), NULL, SND_APPLICATION|SND_NODEFAULT);  // 系統關聯音效
PlaySound(_T("AppExit"), AfxGetResourceHandle(), SND_RESOURCE); // 資源內嵌 WAVE

資源定義:AppExit WAVE "res\\STExit.wav" (必須為 WAVE 類型)

CSoundMgr 類別封裝

功能:邏輯音效 ID 管理、註冊表音效關聯、啟用/靜音切換、資源內嵌預設音效。

定義音效對應表

enum { MYSND_HAPPY, MYSND_UNHAPPY, ... };

BEGIN_SOUND_MAP(MySounds)
    DEFINE_SOUND(MYSND_HAPPY, _T("ST_Happy"), _T("SoundTest Happy"))
    ...
END_SOUND_MAP()
  • ID:程式內部呼叫 PlaySound(ID)
  • 邏輯名:註冊表鍵值 HKCU\AppEvents\Schemes\Apps\AppName\ST_Happy\.current
  • GUI 名:控制台音效設定顯示名稱

初始化與播放

CSoundMgr SoundMgr(MySounds);  // 全域單一實例
if (!SoundMgr.IsRegistered()) SoundMgr.Register();
SoundMgr.PlaySound(MYSND_HAPPY);

關鍵屬性

  • m_bEnableSounds:總開關,綁定選單項目
  • m_bUseResourceSounds:是否使用內嵌資源預設音效

註冊表結構說明

  • HKCU\AppEvents\Schemes\Apps\YourApp\LogicalName\.current — 使用者自訂音效檔
  • HKCU\AppEvents\EventNames\LogicalName — GUI 顯示名稱
  • 建議邏輯名加前綴 (如 ST_) 避免衝突

結語

本文提供 HTTP 版本檢查與 MFC 音效管理兩大實用模組完整原始碼,可直接整合專案。記住:軟體音效設計宜克制,務必提供靜音選項。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved