Could somebody convert the following code to C++ for me, I am having trouble using the methods from the dll file. I can't even include it in the referenced section.
Imports System.Runtime.InteropServices<br />
<br />
Public Class WasiForm1<br />
Inherits System.Windows.Forms.Form<br />
<br />
#Region " Windows Form Designer generated code "<br />
<br />
Public Sub New()<br />
MyBase.New()<br />
<br />
'This call is required by the Windows Form Designer.<br />
InitializeComponent()<br />
<br />
'Add any initialization after the InitializeComponent() call<br />
<br />
End Sub<br />
<br />
'Form overrides dispose to clean up the component list.<br />
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)<br />
If disposing Then<br />
If Not (components Is Nothing) Then<br />
components.Dispose()<br />
End If<br />
End If<br />
MyBase.Dispose(disposing)<br />
End Sub<br />
<br />
'Required by the Windows Form Designer<br />
Private components As System.ComponentModel.IContainer<br />
<br />
'NOTE: The following procedure is required by the Windows Form Designer<br />
'It can be modified using the Windows Form Designer. <br />
'Do not modify it using the code editor.<br />
Friend WithEvents picCapture As System.Windows.Forms.PictureBox<br />
Friend WithEvents lstDevices As System.Windows.Forms.ListBox<br />
Friend WithEvents lblDevice As System.Windows.Forms.Label<br />
Friend WithEvents btnStart As System.Windows.Forms.Button<br />
Friend WithEvents btnSave As System.Windows.Forms.Button<br />
Friend WithEvents btnStop As System.Windows.Forms.Button<br />
Friend WithEvents sfdImage As System.Windows.Forms.SaveFileDialog<br />
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()<br />
Me.picCapture = New System.Windows.Forms.PictureBox<br />
Me.lstDevices = New System.Windows.Forms.ListBox<br />
Me.lblDevice = New System.Windows.Forms.Label<br />
Me.btnStart = New System.Windows.Forms.Button<br />
Me.btnSave = New System.Windows.Forms.Button<br />
Me.btnStop = New System.Windows.Forms.Button<br />
Me.sfdImage = New System.Windows.Forms.SaveFileDialog<br />
Me.SuspendLayout()<br />
'<br />
'picCapture<br />
'<br />
Me.picCapture.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D<br />
Me.picCapture.Location = New System.Drawing.Point(200, 24)<br />
Me.picCapture.Name = "picCapture"<br />
Me.picCapture.Size = New System.Drawing.Size(256, 272)<br />
Me.picCapture.TabIndex = 0<br />
Me.picCapture.TabStop = False<br />
'<br />
'lstDevices<br />
'<br />
Me.lstDevices.Location = New System.Drawing.Point(8, 55)<br />
Me.lstDevices.Name = "lstDevices"<br />
Me.lstDevices.Size = New System.Drawing.Size(184, 238)<br />
Me.lstDevices.TabIndex = 1<br />
'<br />
'lblDevice<br />
'<br />
Me.lblDevice.Location = New System.Drawing.Point(8, 32)<br />
Me.lblDevice.Name = "lblDevice"<br />
Me.lblDevice.Size = New System.Drawing.Size(184, 16)<br />
Me.lblDevice.TabIndex = 2<br />
Me.lblDevice.Text = "Available Devices"<br />
Me.lblDevice.TextAlign = System.Drawing.ContentAlignment.TopCenter<br />
'<br />
'btnStart<br />
'<br />
Me.btnStart.Location = New System.Drawing.Point(20, 320)<br />
Me.btnStart.Name = "btnStart"<br />
Me.btnStart.Size = New System.Drawing.Size(112, 32)<br />
Me.btnStart.TabIndex = 3<br />
Me.btnStart.Text = "Start Preview"<br />
'<br />
'btnSave<br />
'<br />
Me.btnSave.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)<br />
Me.btnSave.Location = New System.Drawing.Point(336, 320)<br />
Me.btnSave.Name = "btnSave"<br />
Me.btnSave.Size = New System.Drawing.Size(112, 32)<br />
Me.btnSave.TabIndex = 4<br />
Me.btnSave.Text = "Save Image"<br />
'<br />
'btnStop<br />
'<br />
Me.btnStop.Location = New System.Drawing.Point(184, 320)<br />
Me.btnStop.Name = "btnStop"<br />
Me.btnStop.Size = New System.Drawing.Size(112, 32)<br />
Me.btnStop.TabIndex = 5<br />
Me.btnStop.Text = "Stop Preview"<br />
'<br />
'sfdImage<br />
'<br />
Me.sfdImage.FileName = "Webcam1"<br />
Me.sfdImage.Filter = "Bitmap|*.bmp"<br />
'<br />
'WasiForm1<br />
'<br />
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)<br />
Me.ClientSize = New System.Drawing.Size(472, 382)<br />
Me.Controls.Add(Me.btnStop)<br />
Me.Controls.Add(Me.btnSave)<br />
Me.Controls.Add(Me.btnStart)<br />
Me.Controls.Add(Me.lblDevice)<br />
Me.Controls.Add(Me.lstDevices)<br />
Me.Controls.Add(Me.picCapture)<br />
Me.Name = "WasiForm1"<br />
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen<br />
Me.Text = "Video Capture"<br />
Me.ResumeLayout(False)<br />
<br />
End Sub<br />
<br />
#End Region<br />
<br />
Const WM_CAP As Short = &H400S<br />
<br />
Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10<br />
Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11<br />
Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30<br />
<br />
Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50<br />
Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52<br />
Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53<br />
Const WS_CHILD As Integer = &H40000000<br />
Const WS_VISIBLE As Integer = &H10000000<br />
Const SWP_NOMOVE As Short = &H2S<br />
Const SWP_NOSIZE As Short = 1<br />
Const SWP_NOZORDER As Short = &H4S<br />
Const HWND_BOTTOM As Short = 1<br />
<br />
Dim iDevice As Integer = 0 ' Current device ID<br />
Dim hHwnd As Integer ' Handle to preview window<br />
<br />
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _<br />
(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _<br />
<MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer<br />
<br />
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _<br />
ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _<br />
ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer<br />
<br />
Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean<br />
<br />
Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _<br />
(ByVal lpszWindowName As String, ByVal dwStyle As Integer, _<br />
ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _<br />
ByVal nHeight As Short, ByVal hWndParent As Integer, _<br />
ByVal nID As Integer) As Integer<br />
<br />
Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _<br />
ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _<br />
ByVal cbVer As Integer) As Boolean<br />
<br />
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br />
LoadDeviceList()<br />
If lstDevices.Items.Count > 0 Then<br />
btnStart.Enabled = True<br />
lstDevices.SelectedIndex = 1<br />
iDevice = lstDevices.SelectedIndex<br />
OpenPreviewWindow()<br />
btnStart.Enabled = False<br />
Else<br />
lstDevices.Items.Add("No Capture Device")<br />
btnStart.Enabled = False<br />
End If<br />
<br />
btnStop.Enabled = True<br />
btnSave.Enabled = True<br />
picCapture.SizeMode = PictureBoxSizeMode.StretchImage<br />
End Sub<br />
<br />
Private Sub LoadDeviceList()<br />
Dim strName As String = Space(100)<br />
Dim strVer As String = Space(100)<br />
Dim bReturn As Boolean<br />
Dim x As Integer = 0<br />
<br />
' <br />
' Load name of all available devices into the lstDevices<br />
'<br />
<br />
Do<br />
'<br />
' Get Driver name and version<br />
'<br />
bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)<br />
<br />
'<br />
' If there was a device add device name to the list<br />
'<br />
If bReturn Then lstDevices.Items.Add(strName.Trim)<br />
x += 1<br />
Loop Until bReturn = False<br />
End Sub<br />
<br />
Private Sub OpenPreviewWindow()<br />
Dim iHeight As Integer = picCapture.Height<br />
Dim iWidth As Integer = picCapture.Width<br />
<br />
'<br />
' Open Preview window in picturebox<br />
'<br />
hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, _<br />
480, picCapture.Handle.ToInt32, 0)<br />
<br />
'<br />
' Connect to device<br />
'<br />
If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then<br />
'<br />
'Set the preview scale<br />
'<br />
SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)<br />
<br />
'<br />
'Set the preview rate in milliseconds<br />
'<br />
SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0)<br />
<br />
'<br />
'Start previewing the image from the camera<br />
'<br />
SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)<br />
<br />
'<br />
' Resize window to fit in picturebox<br />
'<br />
SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, picCapture.Width, picCapture.Height, _<br />
SWP_NOMOVE Or SWP_NOZORDER)<br />
<br />
btnSave.Enabled = True<br />
btnStop.Enabled = True<br />
btnStart.Enabled = False<br />
Else<br />
'<br />
' Error connecting to device close window<br />
' <br />
DestroyWindow(hHwnd)<br />
<br />
btnSave.Enabled = False<br />
End If<br />
End Sub<br />
<br />
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click<br />
iDevice = lstDevices.SelectedIndex<br />
OpenPreviewWindow()<br />
End Sub<br />
<br />
Private Sub ClosePreviewWindow()<br />
'<br />
' Disconnect from device<br />
'<br />
SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0)<br />
<br />
'<br />
' close window<br />
'<br />
<br />
DestroyWindow(hHwnd)<br />
End Sub<br />
<br />
Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click<br />
ClosePreviewWindow()<br />
btnSave.Enabled = False<br />
btnStart.Enabled = True<br />
btnStop.Enabled = False<br />
End Sub<br />
<br />
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click<br />
Dim data As IDataObject<br />
Dim bmap As Image<br />
<br />
'<br />
' Copy image to clipboard<br />
'<br />
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0)<br />
<br />
'<br />
' Get image from clipboard and convert it to a bitmap<br />
'<br />
data = Clipboard.GetDataObject()<br />
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then<br />
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)<br />
picCapture.Image = bmap<br />
ClosePreviewWindow()<br />
btnSave.Enabled = False<br />
btnStop.Enabled = False<br />
btnStart.Enabled = True<br />
<br />
If sfdImage.ShowDialog = DialogResult.OK Then<br />
bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp)<br />
End If<br />
<br />
End If<br />
End Sub<br />
<br />
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing<br />
If btnStop.Enabled Then<br />
ClosePreviewWindow()<br />
End If<br />
End Sub<br />
End Class
Below is the code that I have attempted to write through conversion. Could you also tell me of tutorials to help write video and image applications from scratch. The code above is not mine, I am just re-writing it to understand what needs to be done for graphical applications.
<br />
#pragma once<br />
<br />
<br />
<br />
<br />
namespace Webcam<br />
{<br />
using namespace System;<br />
using namespace System::ComponentModel;<br />
using namespace System::Collections;<br />
using namespace System::Windows::Forms;<br />
using namespace System::Data;<br />
using namespace System::Drawing;<br />
public __gc class Form1 : public System::Windows::Forms::Form<br />
{ <br />
public:<br />
Form1(void)<br />
{<br />
InitializeComponent();<br />
WM_CAP = 1024;<br />
WM_CAP_DRIVER_CONNECT = WM_CAP + 10;<br />
WM_CAP_DRIVER_DISCONNECT = WM_CAP + 11;<br />
WM_CAP_EDIT_COPY = WM_CAP + 30;<br />
WM_CAP_SET_PREVIEW = WM_CAP + 50;<br />
WM_CAP_SET_PREVIEWRATE = WM_CAP + 52;<br />
WM_CAP_SET_SCALE = WM_CAP + 53;<br />
WS_CHILD = 1073741824;<br />
WS_VISIBLE = 268435456;<br />
SWP_NOMOVE = 2;<br />
SWP_NOSIZE = 1;<br />
SWP_NOZORDER = 4;<br />
HWND_BOTTOM = 1;<br />
}<br />
<br />
void loadDeviceList(void)<br />
{<br />
Boolean bReturn = false;<br />
String *strName = "";<br />
String *strVer = "";<br />
int x = 0;<br />
while(bReturn == true)<br />
{<br />
<br />
}<br />
}<br />
<br />
void openWindow()<br />
{<br />
int iHeight = Camera_View->Height;<br />
int iWidth = Camera_View->Width;<br />
}<br />
<br />
void closeWindow()<br />
{<br />
<br />
}<br />
<br />
void Load()<br />
{<br />
if(list->Items->Count > 0)<br />
{<br />
button1->Enabled = true;<br />
list->SelectedIndex = 1;<br />
iDevice = list->SelectedIndex;<br />
openWindow();<br />
button1->Enabled = false;<br />
}<br />
else<br />
{<br />
button1->Enabled = false;<br />
}<br />
button2->Enabled = true;<br />
button3->Enabled = true;<br />
Camera_View->SizeMode = PictureBoxSizeMode::StretchImage;<br />
}<br />
<br />
protected:<br />
void Dispose(Boolean disposing)<br />
{<br />
if (disposing && components)<br />
{<br />
components->Dispose();<br />
}<br />
__super::Dispose(disposing);<br />
}<br />
private: System::Windows::Forms::ListBox * list;<br />
private: System::Windows::Forms::Button * button1;<br />
private: System::Windows::Forms::Button * button2;<br />
private: System::Windows::Forms::Button * button3;<br />
private: System::Windows::Forms::SaveFileDialog * Save_File;<br />
private: System::Windows::Forms::PictureBox * Camera_View;<br />
<br />
private:<br />
int iDevice;<br />
int hHwnd;<br />
signed short int WM_CAP;<br />
signed int WM_CAP_DRIVER_CONNECT;<br />
signed int WM_CAP_DRIVER_DISCONNECT;<br />
signed int WM_CAP_EDIT_COPY;<br />
signed int WM_CAP_SET_PREVIEW;<br />
signed int WM_CAP_SET_PREVIEWRATE;<br />
signed int WM_CAP_SET_SCALE;<br />
signed int WS_CHILD;<br />
signed int WS_VISIBLE;<br />
signed short int SWP_NOMOVE;<br />
signed short int SWP_NOSIZE;<br />
signed short int SWP_NOZORDER;<br />
signed short int HWND_BOTTOM;<br />
System::ComponentModel::Container * components;<br />
<br />
void InitializeComponent(void)<br />
{<br />
this->list = new System::Windows::Forms::ListBox();<br />
this->button1 = new System::Windows::Forms::Button();<br />
this->button2 = new System::Windows::Forms::Button();<br />
this->button3 = new System::Windows::Forms::Button();<br />
this->Save_File = new System::Windows::Forms::SaveFileDialog();<br />
this->Camera_View = new System::Windows::Forms::PictureBox();<br />
this->SuspendLayout();<br />
this->list->Location = System::Drawing::Point(48, 48);<br />
this->list->Name = S"list";<br />
this->list->Size = System::Drawing::Size(184, 290);<br />
this->list->TabIndex = 0;<br />
this->button1->Location = System::Drawing::Point(56, 368);<br />
this->button1->Name = S"button1";<br />
this->button1->Size = System::Drawing::Size(128, 48);<br />
this->button1->TabIndex = 1;<br />
this->button1->Text = S"Start Preview";<br />
this->button1->Click += new System::EventHandler(this, button1_Click);<br />
this->button2->Location = System::Drawing::Point(224, 368);<br />
this->button2->Name = S"button2";<br />
this->button2->Size = System::Drawing::Size(128, 48);<br />
this->button2->TabIndex = 2;<br />
this->button2->Text = S"Stop Preview";<br />
this->button2->Click += new System::EventHandler(this, button2_Click);<br />
this->button3->Location = System::Drawing::Point(384, 368);<br />
this->button3->Name = S"button3";<br />
this->button3->Size = System::Drawing::Size(128, 48);<br />
this->button3->TabIndex = 3;<br />
this->button3->Text = S"Save Image";<br />
this->button3->Click += new System::EventHandler(this, button3_Click);<br />
this->Camera_View->Location = System::Drawing::Point(248, 48);<br />
this->Camera_View->Name = S"Camera_View";<br />
this->Camera_View->Size = System::Drawing::Size(272, 288);<br />
this->Camera_View->TabIndex = 4;<br />
this->Camera_View->TabStop = false;<br />
this->AutoScaleBaseSize = System::Drawing::Size(5, 13);<br />
this->ClientSize = System::Drawing::Size(560, 470);<br />
this->Controls->Add(this->Camera_View);<br />
this->Controls->Add(this->button3);<br />
this->Controls->Add(this->button2);<br />
this->Controls->Add(this->button1);<br />
this->Controls->Add(this->list);<br />
this->Name = S"Form1";<br />
this->Text = S"Camera";<br />
this->ResumeLayout(false);<br />
<br />
}<br />
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)<br />
{<br />
iDevice = list->SelectedIndex;<br />
openWindow();<br />
}<br />
<br />
private: System::Void button2_Click(System::Object * sender, System::EventArgs * e)<br />
{<br />
closeWindow();<br />
button1->Enabled = true;<br />
button2->Enabled = false;<br />
button3->Enabled = false;<br />
}<br />
<br />
private: System::Void button3_Click(System::Object * sender, System::EventArgs * e)<br />
{<br />
IDataObject * data;<br />
Image * bmap;<br />
<br />
<br />
data = Clipboard::GetDataObject();<br />
<br />
<br />
if(data->GetDataPresent(bmap->GetType()))<br />
{<br />
Type * dataType = data->GetType();<br />
<br />
<br />
bmap = data->GetData(dataType);
Camera_View->Image = bmap;<br />
button1->Enabled = true;<br />
button2->Enabled = false;<br />
button3->Enabled = false;<br />
<br />
if(Save_File->ShowDialog() == DialogResult::OK)<br />
{<br />
bmap->Save(Save_File->FileName,Imaging::ImageFormat::Bmp);<br />
} <br />
} <br />
}<br />
};<br />
}
Thanks
|