Mỗi lệnh điều khiển tương ứng với 1 message khác nhau

Một phần của tài liệu Bài giảng lập trình C trên Windows - các khái niệm cơ bản (Trang 188)

- MM_HIMETRIC qui định đơn vị đo

Mỗi lệnh điều khiển tương ứng với 1 message khác nhau

message khác nhau

 Message được gởi đến thiết bị thông qua hàm mciSendCommand <Winmm.lib> hàm mciSendCommand <Winmm.lib>

Thư viện MCI - MCI Command Message…(tt)  MCIERROR mciSendCommand(MCIDEVICEID IDDevice,

UINT uMsg,

DWORD fdwCommand, DWORD dwParam);

ƒ IDDevice:ID của thiết bị cần điều khiển, thông số này không dùng cho thông điệp MCI_OPEN, giá trị này sẽ có được sau khi thực hiện MCI_OPEN

ƒ uMsg: Thông điệp hay chỉ thịđược gởi tới thiết bị, nhằm điều khiển theo những mục đích cụ thể, Đó là những thông điệp

được biểu diễn dưới dạng những hằng sốđược Windows

định nghĩa trước MCI_xxx

ƒ fdwCommand: là giá trịđược xem như những tham số bổ

sung tương ứng với từng thông điệp.

ƒ dwParam: con trỏ chỉ tới cấu trúc lưu thông tin ứng với từng thông điệp do mỗi thông điệp có những đặc thù riêng. Ví dụ ứng với thông điệp MCI_PLAY, chúng ta có cấu trúc tương

Summer 2004

C4W - MultiMedia - Nguyen Tri Tuan - DH.KHTN Tp.HCM 27 Thư viện MCI - MCI Command Message…(tt)

VD1. Mở thiết bị

MCI_OPEN_PARMS mciOpenParams;

mciOpenParams.lpstrDeviceType = "waveaudio";

mciOpenParams.lpstrElementName = “C:/MySound.wav”; DWORD mciError = mciSendCommand(NULL, MCI_OPEN,

MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)(LPVOID) &mciOpenParams); (DWORD)(LPVOID) &mciOpenParams); mciDevID = mciOpenParams.wDeviceID;

VD2. Play

MCI_PLAY_PARMS mciPlayParms;

mciPlayParams.dwCallback = (unsigned long) m_hWnd; DWORD mciError = mciSendCommand(mciDevID, MCI_PLAY,

MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms);

Thư viện MCI - MCI Command Message…(tt)

VD3. Ngừng play DWORD mciError =

mciSendCommand(mciDevID, MCI_STOP, 0, 0);

VD4. Đóng thiết bị

DWORD mciError =

Summer 2004

C4W - MultiMedia - Nguyen Tri Tuan - DH.KHTN Tp.HCM 29 Thư viện MCI - MCI Command Message…(tt)

 Ưu điểm

ƒ Sử dụng message Æquen thuộc với các lập trình Windows

ƒ Lệnh có cú pháp rõ ràng, dễnhớ

ƒ Xử lý được file có tên chứa khoảng trắng

 Khuyết điểm

ƒ Cần nắm rõ các cấu trúc dữ liệu tương ứng với mỗi thông điệp

Thư viện MCI - Xử lý lỗi

 mciSendStringmciSendCommandcó giá trị trả về là

MCIERROR

ƒ 0: lệnh được thực hiện thành công;

ƒ Khác 0: là mã lỗi ở dạng số

 MCI cung cấp cho chúng ta hàmmciGetErrorStringđể

nhận thông báo lỗi tương ứng ở dạng chuỗi

 BOOL mciGetErrorString(DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText);

ƒ fdwError: Đây chính là mã lỗi nhận được từ các hàm

mciSendStringmciSendCommand

ƒ lpszErrorText: Chuỗi chứa nội dung thông báo lỗi (dài tối đa 128 ký tự)

Summer 2004

C4W - MultiMedia - Nguyen Tri Tuan - DH.KHTN Tp.HCM 31 Thư viện MCI - Xử lý lỗi…(tt)

VD. Xác định chuỗi thông báo lỗi

if (dwReturn = mciSendCommand(mciDevID, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParams)) {

char szError[128];

mciSendCommand(mciDevID, MCI_CLOSE, 0, 0L); mciGetErrorString(dwReturn, szError, 128); MessageBox(szError, "Error", MB_OK);

return; }

Thư viện MCI - Nhận xét  Ưu điểm

ƒ Dễ sử dụng

ƒ Không cần hiểu biết nhiều về các thiết bị Multi-Media, các cấu trúc file

ƒ Sử dụng cùng một cơ chế cho các thiết bị: Wave audio, MIDI, CD Audio, AVI,…

ƒ Độc lập thiết bị

 Khuyết điểm

ƒ Do xử lý ở cấp cao nên phụ thuộc vào giao diện hàm MCI có sẵn, không thể can thiệp vào việc mở rộng khả

năng ứng dụng Multimedia như hiệu ứng âm thanh, graphics equalizer,…

ƒ Đối với xử lý âm thanh wave audio thì MCI chỉ xử lý

Summer 2004

C4W - MultiMedia - Nguyen Tri Tuan - DH.KHTN Tp.HCM 33 Cám ơn - Hỏi & Đáp

Một phần của tài liệu Bài giảng lập trình C trên Windows - các khái niệm cơ bản (Trang 188)

Tải bản đầy đủ (PDF)

(192 trang)