capDriverConnect 失敗)。Windows 7/10 上 VFW (avicap32.dll) 與部份攝影機驅動相容性差,capDriverConnect 單次呼叫常因驅動尚未就緒而失敗。
// 最大重試次數
const int MAX_RETRY = 10;
for (int i = 0; i < MAX_RETRY; i++) {
if (capDriverConnect(hWndC, 0)) {
break; // 連線成功
}
Sleep(500); // 等待驅動就緒
}
if (!capDriverConnect(hWndC, 0)) {
MessageBox(hWnd, _T("無法連接攝影機"), _T("錯誤"), MB_ICONERROR);
return;
}
qedit.h)、Media Foundation 或 OpenCV VideoCapture,相容性與功能遠優於 VFW。WM_CREATE 中啟動背景執行緒輪詢連線,成功後 PostMessage 通知主執行緒開始預覽。#include <opencv2/opencv.hpp>
cv::VideoCapture cap(0); // 開啟預設攝影機
if (!cap.isOpened()) return -1;
cv::Mat frame;
while (true) {
cap >> frame;
if (frame.empty()) break;
cv::imshow("Camera", frame);
if (cv::waitKey(30) >= 0) break;
}