1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#include "campreview.h"
#include "ui_campreview.h"
#include <QWidget>
#include <QDebug>
#include <windows.h>
#include <vfw.h>
CamPreview::CamPreview(QWidget *parent) :
QDialog(parent),
ui(new Ui::CamPreviewDialog)
{
ui->setupUi(this);
ui->pbtnConnect->setEnabled(true);
ui->pbtnDisconnect->setEnabled(false);
connect(ui->pbtnConnect, SIGNAL(clicked()), this, SLOT(camConnect()));
connect(ui->pbtnDisconnect, SIGNAL(clicked()), this, SLOT(camDisconnect()));
connected = false;
//Creation de HANDLE de la fenetre d'affichage en etant un enfant d'un QWidget (capWidget dans mon cas)
hWndC = capCreateCaptureWindow(TEXT("My Capture Window"),
WS_CHILD | WS_VISIBLE, 0, 0, ui->capWidget->width(), ui->capWidget->height(), (HWND) ui->capWidget->winId(), 0);
}
CamPreview::~CamPreview()
{
if (connected)
capDriverDisconnect( hWndC ); //Deconnecter le driver
delete ui;
}
bool CamPreview::camConnect()
{
// Lancer la connection sur le driver de la webcam deux fois
// (Je ne sais pas pourquoi mais c'est le seul moyen que j'ai trouvé
// pour la faire fonctionnée)
bool OK = capDriverConnect(hWndC, 0);
OK = capDriverConnect(hWndC, 0);
if( OK )
{
capPreviewRate(hWndC, 15); // Regler le taux de rafrechissement
capPreviewScale(hWndC, true); // Activer la mise a l'echelle
capPreview(hWndC, true); // Lancer la visualisation
connected = true;
ui->pbtnConnect->setEnabled(false);
ui->pbtnDisconnect->setEnabled(true);
qDebug() << "Connection OK" << endl;
}
else
qDebug() << "Connection ERROR" << endl;
return OK;
}
bool CamPreview::camDisconnect()
{
capPreview(hWndC, false); // Arrêter la visualisation
bool OK = capDriverDisconnect( hWndC ); //Deconnecter le driver
if (OK)
{
connected = false;
ui->pbtnConnect->setEnabled(true);
ui->pbtnDisconnect->setEnabled(false);
qDebug() << "Disconnection OK" << endl;
}
else
qDebug() << "Disconnection ERROR" << endl;
return OK;
} |
Partager