Click here to Skip to main content
15,899,026 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
AnswerRe: modify a DLL(binary) to call another DLL function/exe or embed a code...I need some concepts clarification Pin
Richard MacCutchan3-Sep-09 2:24
mveRichard MacCutchan3-Sep-09 2:24 
Questionthe error in managed c++ function call unmanaged c++ function Pin
jetjeankimo2-Sep-09 17:43
jetjeankimo2-Sep-09 17:43 
AnswerRe: the error in managed c++ function call unmanaged c++ function Pin
N a v a n e e t h3-Sep-09 0:00
N a v a n e e t h3-Sep-09 0:00 
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
jetjeankimo3-Sep-09 16:12
jetjeankimo3-Sep-09 16:12 
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
N a v a n e e t h4-Sep-09 5:59
N a v a n e e t h4-Sep-09 5:59 
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
jetjeankimo4-Sep-09 16:31
jetjeankimo4-Sep-09 16:31 
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
N a v a n e e t h4-Sep-09 17:51
N a v a n e e t h4-Sep-09 17:51 
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
jetjeankimo4-Sep-09 18:21
jetjeankimo4-Sep-09 18:21 
/*--------------------------------------------------------------------------*/
// fglove.h
//
// 5DT Data Glove driver SDK
// Version 1.04a
//
// Copyright (C) 2000-2001, 5DT <Fifth Dimension Technologies>
// http://www.5dt.com/
/*--------------------------------------------------------------------------*/
#ifndef _FGLOVE_H_
#define _FGLOVE_H_
/*--------------------------------------------------------------------------*/
enum EfdGloveHand
{
FD_HAND_LEFT, // left-handed glove
FD_HAND_RIGHT // right-handed glove
};

enum EfdGloveTypes
{
FD_GLOVENONE, // no glove
FD_GLOVE7, // 7-sensor
FD_GLOVE7W, // 7-sensor, wireless
FD_GLOVE16, // 16-sensor
FD_GLOVE16W // 16-sensor, wireless
};

enum EfdSensors
{
FD_THUMBNEAR=0,
FD_THUMBFAR,
FD_THUMBINDEX,
FD_INDEXNEAR,
FD_INDEXFAR,
FD_INDEXMIDDLE,
FD_MIDDLENEAR,
FD_MIDDLEFAR,
FD_MIDDLERING,
FD_RINGNEAR,
FD_RINGFAR,
FD_RINGLITTLE,
FD_LITTLENEAR,
FD_LITTLEFAR,
FD_THUMBPALM,
FD_WRISTBEND,
FD_PITCH,
FD_ROLL
};
/*--------------------------------------------------------------------------*/
typedef struct
{
// The contents of this struct are platform-dependent and subject to
// change. You should not manipulate the contents of this struct directly.
void *m_pStuff;
} fdGlove;
/*--------------------------------------------------------------------------*/
fdGlove *fdOpen(char *pPort);
int fdClose(fdGlove *pFG);
int fdGetGloveHand(fdGlove *pFG);
int fdGetGloveType(fdGlove *pFG);
int fdGetNumSensors(fdGlove *pFG);
void fdGetSensorRawAll(fdGlove *pFG, unsigned short *pData);
unsigned short fdGetSensorRaw(fdGlove *pFG, int nSensor);
void fdSetSensorRawAll(fdGlove *pFG, unsigned short *pData);
void fdSetSensorRaw(fdGlove *pFG, int nSensor, unsigned short nRaw);
void fdGetSensorScaledAll(fdGlove *pFG, float *pData);
float fdGetSensorScaled(fdGlove *pFG, int nSensor);
int fdGetNumGestures(fdGlove *pFG);
int fdGetGesture(fdGlove *pFG);
void fdGetCalibrationAll(fdGlove *pFG, unsigned short *pUpper, unsigned short *pLower);
void fdGetCalibration(fdGlove *pFG, int nSensor, unsigned short *pUpper, unsigned short *pLower);
void fdSetCalibrationAll(fdGlove *pFG, unsigned short *pUpper, unsigned short *pLower);
void fdSetCalibration(fdGlove *pFG, int nSensor, unsigned short nUpper, unsigned short nLower);
void fdResetCalibration(fdGlove *pFG);
void fdGetSensorMaxAll(fdGlove *pFG, float *pMax);
float fdGetSensorMax(fdGlove *pFG, int nSensor);
void fdSetSensorMaxAll(fdGlove *pFG, float *pMax);
void fdSetSensorMax(fdGlove *pFG, int nSensor, float fMax);
void fdGetThresholdAll(fdGlove *pFG, float *pUpper, float *pLower);
void fdGetThreshold(fdGlove *pFG, int nSensor, float *pUpper, float *pLower);
void fdSetThresholdAll(fdGlove *pFG, float *pUpper, float *pLower);
void fdSetThreshold(fdGlove *pFG, int nSensor, float fUpper, float fLower);
void fdGetGloveInfo(fdGlove *pFG, unsigned char *pData);
void fdGetDriverInfo(fdGlove *pFG, unsigned char *pData);
/*--------------------------------------------------------------------------*/
#endif // #ifndef _FGLOVE_H_
/*--------------------------------------------------------------------------*/


#pragma once

#include < stdio.h >
#include < stdlib.h >
#include < vcclr.h >
#include "fglove.h"

namespace DataGlove
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Runtime::InteropServices;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::IO::Ports;

/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class FrmDataGlove : public System::Windows::Forms::Form
{
public:
FrmDataGlove(void)
{
InitializeComponent();
array<String^>^ serialPorts = nullptr;
try
{
// Get a list of serial port names.
serialPorts = SerialPort::GetPortNames();
}
catch (Win32Exception^ ex)
{
Console::WriteLine(ex->Message);
}

for each (String^ str in serialPorts)
{
this->cmbCOM->Items->Add(str);
}
//
// SerialPort
//
this->serialPort->PortName="COM1";
this->serialPort->BaudRate=9600;
this->serialPort->DataBits=8;
this->serialPort->Parity=Parity::None;
this->serialPort->StopBits=StopBits::One;

this->cmbCOM->SelectedItem="COM1";
this->cmbBudRte->SelectedIndex=2;
this->cmbParity->SelectedIndex=0;
this->cmbStopBits->SelectedIndex=0;
this->cmbDataBits->SelectedIndex=0;

}

protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~FrmDataGlove()
{
if (components)
{
delete components;
}
}

private: System::Windows::Forms::ComboBox^ cmbCOM;
private: System::Windows::Forms::Label^ lblCOM;
private: System::Windows::Forms::Label^ lblBudRte;
private: System::Windows::Forms::ComboBox^ cmbBudRte;
private: System::Windows::Forms::ComboBox^ cmbDataBits;
private: System::Windows::Forms::Label^ lblDataBit;
private: System::Windows::Forms::ComboBox^ cmbParity;
private: System::Windows::Forms::Label^ lblParity;
private: System::Windows::Forms::Label^ lblStopBit;
private: System::Windows::Forms::ComboBox^ cmbStopBits;
private: System::Windows::Forms::Button^ btnConnect;
private: System::Windows::Forms::Button^ btnDisConnect;
private: System::Windows::Forms::Label^ lblStatus;
private: System::IO::Ports::SerialPort^ serialPort;
private: System::Windows::Forms::GroupBox^ grpRS232;
private: System::Windows::Forms::GroupBox^ grpGesture;
private: System::Windows::Forms::Label^ lblTilt1;
private: System::Windows::Forms::Label^ lblGesture1;
private: System::Windows::Forms::Label^ lblTilt;
private: System::Windows::Forms::Label^ lblGesture;
private: System::Windows::Forms::Button^ btnGetData;
private: System::ComponentModel::IContainer^ components;


public: fdGlove *m_pGlove;

#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
this->cmbCOM = (gcnew System::Windows::Forms::ComboBox());
this->lblCOM = (gcnew System::Windows::Forms::Label());
this->lblBudRte = (gcnew System::Windows::Forms::Label());
this->cmbBudRte = (gcnew System::Windows::Forms::ComboBox());
this->cmbDataBits = (gcnew System::Windows::Forms::ComboBox());
this->lblDataBit = (gcnew System::Windows::Forms::Label());
this->cmbParity = (gcnew System::Windows::Forms::ComboBox());
this->lblParity = (gcnew System::Windows::Forms::Label());
this->lblStopBit = (gcnew System::Windows::Forms::Label());
this->cmbStopBits = (gcnew System::Windows::Forms::ComboBox());
this->btnConnect = (gcnew System::Windows::Forms::Button());
this->btnDisConnect = (gcnew System::Windows::Forms::Button());
this->lblStatus = (gcnew System::Windows::Forms::Label());
this->serialPort = (gcnew System::IO::Ports::SerialPort(this->components));
this->grpRS232 = (gcnew System::Windows::Forms::GroupBox());
this->grpGesture = (gcnew System::Windows::Forms::GroupBox());
this->lblTilt1 = (gcnew System::Windows::Forms::Label());
this->lblGesture1 = (gcnew System::Windows::Forms::Label());
this->lblTilt = (gcnew System::Windows::Forms::Label());
this->lblGesture = (gcnew System::Windows::Forms::Label());
this->btnGetData = (gcnew System::Windows::Forms::Button());
this->grpRS232->SuspendLayout();
this->grpGesture->SuspendLayout();
this->SuspendLayout();
//
// cmbCOM
//
this->cmbCOM->FormattingEnabled = true;
this->cmbCOM->Location = System::Drawing::Point(79, 18);
this->cmbCOM->Name = L"cmbCOM";
this->cmbCOM->Size = System::Drawing::Size(121, 20);
this->cmbCOM->TabIndex = 0;
this->cmbCOM->Text = L"COM1";
this->cmbCOM->SelectedIndexChanged += gcnew System::EventHandler(this, &FrmDataGlove::cmbCOM_SelectedIndexChanged);
//
// lblCOM
//
this->lblCOM->AutoSize = true;
this->lblCOM->Location = System::Drawing::Point(6, 18);
this->lblCOM->Name = L"lblCOM";
this->lblCOM->Size = System::Drawing::Size(53, 12);
this->lblCOM->TabIndex = 1;
this->lblCOM->Text = L"COM Port";
//
// lblBudRte
//
this->lblBudRte->AutoSize = true;
this->lblBudRte->Location = System::Drawing::Point(5, 44);
this->lblBudRte->Name = L"lblBudRte";
this->lblBudRte->Size = System::Drawing::Size(54, 12);
this->lblBudRte->TabIndex = 2;
this->lblBudRte->Text = L"Baud Rate";
//
// cmbBudRte
//
this->cmbBudRte->FormattingEnabled = true;
this->cmbBudRte->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"38400", L"19200", L"9600", L"4800", L"2400"});
this->cmbBudRte->Location = System::Drawing::Point(79, 44);
this->cmbBudRte->Name = L"cmbBudRte";
this->cmbBudRte->Size = System::Drawing::Size(121, 20);
this->cmbBudRte->TabIndex = 3;
this->cmbBudRte->Text = L"9600";
this->cmbBudRte->SelectedIndexChanged += gcnew System::EventHandler(this, &FrmDataGlove::cmbBudRte_SelectedIndexChanged);
//
// cmbDataBits
//
this->cmbDataBits->FormattingEnabled = true;
this->cmbDataBits->Items->AddRange(gcnew cli::array< System::Object^ >(4) {L"5", L"6", L"7", L"8"});
this->cmbDataBits->Location = System::Drawing::Point(79, 70);
this->cmbDataBits->Name = L"cmbDataBits";
this->cmbDataBits->Size = System::Drawing::Size(121, 20);
this->cmbDataBits->TabIndex = 4;
this->cmbDataBits->Text = L"5";
this->cmbDataBits->SelectedIndexChanged += gcnew System::EventHandler(this, &FrmDataGlove::cmbDataBits_SelectedIndexChanged);
//
// lblDataBit
//
this->lblDataBit->AutoSize = true;
this->lblDataBit->Location = System::Drawing::Point(12, 70);
this->lblDataBit->Name = L"lblDataBit";
this->lblDataBit->Size = System::Drawing::Size(47, 12);
this->lblDataBit->TabIndex = 5;
this->lblDataBit->Text = L"Data Bits";
//
// cmbParity
//
this->cmbParity->FormattingEnabled = true;
this->cmbParity->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"Even", L"Mark", L"None", L"Odd", L"Space"});
this->cmbParity->Location = System::Drawing::Point(79, 96);
this->cmbParity->Name = L"cmbParity";
this->cmbParity->Size = System::Drawing::Size(121, 20);
this->cmbParity->TabIndex = 6;
this->cmbParity->Text = L"None";
this->cmbParity->SelectedIndexChanged += gcnew System::EventHandler(this, &FrmDataGlove::cmbParity_SelectedIndexChanged);
//
// lblParity
//
this->lblParity->AutoSize = true;
this->lblParity->Location = System::Drawing::Point(27, 96);
this->lblParity->Name = L"lblParity";
this->lblParity->Size = System::Drawing::Size(32, 12);
this->lblParity->TabIndex = 7;
this->lblParity->Text = L"Parity";
//
// lblStopBit
//
this->lblStopBit->AutoSize = true;
this->lblStopBit->Location = System::Drawing::Point(12, 122);
this->lblStopBit->Name = L"lblStopBit";
this->lblStopBit->Size = System::Drawing::Size(47, 12);
this->lblStopBit->TabIndex = 8;
this->lblStopBit->Text = L"Stop Bits";
//
// cmbStopBits
//
this->cmbStopBits->FormattingEnabled = true;
this->cmbStopBits->Items->AddRange(gcnew cli::array< System::Object^ >(3) {L"One", L"OnePointFive", L"Two"});
this->cmbStopBits->Location = System::Drawing::Point(79, 122);
this->cmbStopBits->Name = L"cmbStopBits";
this->cmbStopBits->Size = System::Drawing::Size(121, 20);
this->cmbStopBits->TabIndex = 9;
this->cmbStopBits->Text = L"One";
this->cmbStopBits->SelectedIndexChanged += gcnew System::EventHandler(this, &FrmDataGlove::cmbStopBits_SelectedIndexChanged);
//
// btnConnect
//
this->btnConnect->Location = System::Drawing::Point(206, 18);
this->btnConnect->Name = L"btnConnect";
this->btnConnect->Size = System::Drawing::Size(135, 23);
this->btnConnect->TabIndex = 10;
this->btnConnect->Text = L"Connect";
this->btnConnect->UseVisualStyleBackColor = true;
this->btnConnect->Click += gcnew System::EventHandler(this, &FrmDataGlove::btnConnect_Click);
//
// btnDisConnect
//
this->btnDisConnect->Location = System::Drawing::Point(206, 45);
this->btnDisConnect->Name = L"btnDisConnect";
this->btnDisConnect->Size = System::Drawing::Size(135, 23);
this->btnDisConnect->TabIndex = 11;
this->btnDisConnect->Text = L"Dis-Connect";
this->btnDisConnect->UseVisualStyleBackColor = true;
this->btnDisConnect->Click += gcnew System::EventHandler(this, &FrmDataGlove::btnDisConnect_Click);
//
// lblStatus
//
this->lblStatus->BackColor = System::Drawing::Color::Red;
this->lblStatus->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
this->lblStatus->Location = System::Drawing::Point(347, 18);
this->lblStatus->Name = L"lblStatus";
this->lblStatus->Size = System::Drawing::Size(50, 50);
this->lblStatus->TabIndex = 12;
//
// grpRS232
//
this->grpRS232->Controls->Add(this->btnDisConnect);
this->grpRS232->Controls->Add(this->lblStatus);
this->grpRS232->Controls->Add(this->cmbCOM);
this->grpRS232->Controls->Add(this->lblCOM);
this->grpRS232->Controls->Add(this->btnConnect);
this->grpRS232->Controls->Add(this->lblBudRte);
this->grpRS232->Controls->Add(this->cmbStopBits);
this->grpRS232->Controls->Add(this->cmbBudRte);
this->grpRS232->Controls->Add(this->lblStopBit);
this->grpRS232->Controls->Add(this->cmbDataBits);
this->grpRS232->Controls->Add(this->lblParity);
this->grpRS232->Controls->Add(this->lblDataBit);
this->grpRS232->Controls->Add(this->cmbParity);
this->grpRS232->Location = System::Drawing::Point(12, 12);
this->grpRS232->Name = L"grpRS232";
this->grpRS232->Size = System::Drawing::Size(405, 149);
this->grpRS232->TabIndex = 13;
this->grpRS232->TabStop = false;
this->grpRS232->Text = L"RS232 Setting";
//
// grpGesture
//
this->grpGesture->Controls->Add(this->btnGetData);
this->grpGesture->Controls->Add(this->lblTilt1);
this->grpGesture->Controls->Add(this->lblGesture1);
this->grpGesture->Controls->Add(this->lblTilt);
this->grpGesture->Controls->Add(this->lblGesture);
this->grpGesture->Location = System::Drawing::Point(432, 12);
this->grpGesture->Name = L"grpGesture";
this->grpGesture->Size = System::Drawing::Size(200, 149);
this->grpGesture->TabIndex = 14;
this->grpGesture->TabStop = false;
this->grpGesture->Text = L"Gesture and Tilt";
//
// lblTilt1
//
this->lblTilt1->BackColor = System::Drawing::Color::White;
this->lblTilt1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
this->lblTilt1->Location = System::Drawing::Point(91, 64);
this->lblTilt1->Name = L"lblTilt1";
this->lblTilt1->Size = System::Drawing::Size(100, 25);
this->lblTilt1->TabIndex = 3;
this->lblTilt1->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
//
// lblGesture1
//
this->lblGesture1->BackColor = System::Drawing::SystemColors::ControlLightLight;
this->lblGesture1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
this->lblGesture1->Location = System::Drawing::Point(91, 20);
this->lblGesture1->Name = L"lblGesture1";
this->lblGesture1->Size = System::Drawing::Size(100, 25);
this->lblGesture1->TabIndex = 2;
this->lblGesture1->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
//
// lblTilt
//
this->lblTilt->AutoSize = true;
this->lblTilt->Location = System::Drawing::Point(64, 70);
this->lblTilt->Name = L"lblTilt";
this->lblTilt->Size = System::Drawing::Size(21, 12);
this->lblTilt->TabIndex = 1;
this->lblTilt->Text = L"Tilt";
//
// lblGesture
//
this->lblGesture->AutoSize = true;
this->lblGesture->Location = System::Drawing::Point(6, 26);
this->lblGesture->Name = L"lblGesture";
this->lblGesture->Size = System::Drawing::Size(79, 12);
this->lblGesture->TabIndex = 0;
this->lblGesture->Text = L"Current Gesture";
//
// btnGetData
//
this->btnGetData->Location = System::Drawing::Point(10, 96);
this->btnGetData->Name = L"btnGetData";
this->btnGetData->Size = System::Drawing::Size(181, 38);
this->btnGetData->TabIndex = 4;
this->btnGetData->Text = L"Get Data";
this->btnGetData->UseVisualStyleBackColor = true;
this->btnGetData->Click += gcnew System::EventHandler(this, &FrmDataGlove::btnGetData_Click);
//
// FrmDataGlove
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(648, 266);
this->Controls->Add(this->grpGesture);
this->Controls->Add(this->grpRS232);
this->Name = L"FrmDataGlove";
this->Text = L"Data Glove";
this->grpRS232->ResumeLayout(false);
this->grpRS232->PerformLayout();
this->grpGesture->ResumeLayout(false);
this->grpGesture->PerformLayout();
this->ResumeLayout(false);

}
#pragma endregion

private: System::Void cmbCOM_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
if ( this->serialPort->IsOpen)
{
this->serialPort->Close();
this->serialPort->PortName=static_cast<String^>(this->cmbCOM->SelectedItem);
this->serialPort->Open();
}
else
{
this->serialPort->PortName=static_cast<String^>(this->cmbCOM->SelectedItem);
}
}
private: System::Void cmbBudRte_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
switch(cmbBudRte->SelectedIndex)
{
case 0:this->serialPort->BaudRate=38400;
case 1:this->serialPort->BaudRate=19200;
case 2:this->serialPort->BaudRate=9600;
case 3:this->serialPort->BaudRate=4800;
case 4:this->serialPort->BaudRate=2400;
}
}
private: System::Void cmbParity_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
switch(cmbParity->SelectedIndex)
{
case 0: this->serialPort->Parity=Parity::Even;
case 1: this->serialPort->Parity=Parity::Mark;
case 2: this->serialPort->Parity=Parity::None;
case 3: this->serialPort->Parity=Parity::Odd;
case 4: this->serialPort->Parity=Parity::Space;
}
}
private: System::Void cmbStopBits_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
switch(cmbStopBits->SelectedIndex)
{
case 0:this->serialPort->StopBits=StopBits::One;
case 1:this->serialPort->StopBits=StopBits::OnePointFive ;
case 2:this->serialPort->StopBits=StopBits::Two;
}
}
private: System::Void cmbDataBits_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)
{
switch(cmbDataBits->SelectedIndex)
{
case 0:this->serialPort->DataBits=5;
case 1:this->serialPort->DataBits=6;
case 2:this->serialPort->DataBits=7;
case 3:this->serialPort->DataBits=8;
}
}
private: System::Void btnConnect_Click(System::Object^ sender, System::EventArgs^ e) {
this->serialPort->Open();
if (this->serialPort->IsOpen)
{
Color color;
this->lblStatus->BackColor=color.LimeGreen;
}
else
{
Color color;
this->lblStatus->BackColor=color.Red;
}

}
private: System::Void btnDisConnect_Click(System::Object^ sender, System::EventArgs^ e) {
this->serialPort->Close();
if (this->serialPort->IsOpen)
{
Color color;
this->lblStatus->BackColor=color.LimeGreen;
}
else
{
Color color;
this->lblStatus->BackColor=color.Red;
}
}



private: System::Void btnGetData_Click(System::Object^ sender, System::EventArgs^ e)
{
char* p1;
p1=StringToPChar(this->serialPort->PortName);
m_pGlove=fdOpen(p1);

}
private:char* StringToPChar(String^ str)
{
// Reference MSDN library example
// Pin memory so GC can't move it while native function is called
pin_ptr<const wchar_t> wch = PtrToStringChars(str);

// Conversion to char* :
// Can just convert wchar_t* to char* using one of the
// conversion functions such as:
// WideCharToMultiByte()
// wcstombs_s()
// ... etc
size_t convertedChars = 0;
size_t sizeInBytes = ((str->Length + 1) * 2);
errno_t err = 0;
char* ch = (char *)malloc(sizeInBytes);

err = wcstombs_s(&convertedChars,ch,sizeInBytes,wch,sizeInBytes);
if (err!= 0)
{
return 0;
}
else
{
return ch;
}

};


};



};

// DataGlove.cpp: 主要專案檔。

#include "stdafx.h"
#include "FrmDataGlove.h"


using namespace DataGlove;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// 建立任何控制項之前,先啟用 Windows XP 視覺化效果
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// 建立主視窗並執行
Application::Run(gcnew FrmDataGlove());



return 0;
}

Thank you very much. Smile | :)
GeneralRe: the error in managed c++ function call unmanaged c++ function Pin
jetjeankimo5-Sep-09 21:33
jetjeankimo5-Sep-09 21:33 
QuestionSpy++ Pin
ant-damage2-Sep-09 2:19
ant-damage2-Sep-09 2:19 
AnswerRe: Spy++ Pin
Randor 2-Sep-09 10:20
professional Randor 2-Sep-09 10:20 
GeneralRe: Spy++ Pin
ant-damage3-Sep-09 4:22
ant-damage3-Sep-09 4:22 
GeneralRe: Spy++ Pin
EliottA3-Sep-09 5:13
EliottA3-Sep-09 5:13 
GeneralRe: Spy++ Pin
ant-damage3-Sep-09 5:32
ant-damage3-Sep-09 5:32 
GeneralRe: Spy++ Pin
EliottA3-Sep-09 5:33
EliottA3-Sep-09 5:33 
GeneralRe: Spy++ Pin
ant-damage3-Sep-09 5:35
ant-damage3-Sep-09 5:35 
AnswerRe: Spy++ Pin
ThatsAlok2-Sep-09 17:34
ThatsAlok2-Sep-09 17:34 
QuestionDeflateStream & GZipStream Pin
ant-damage2-Sep-09 1:51
ant-damage2-Sep-09 1:51 
AnswerRe: DeflateStream & GZipStream Pin
Randor 2-Sep-09 10:24
professional Randor 2-Sep-09 10:24 
GeneralRe: DeflateStream & GZipStream Pin
ant-damage3-Sep-09 4:13
ant-damage3-Sep-09 4:13 
GeneralRe: DeflateStream & GZipStream Pin
Randor 3-Sep-09 10:49
professional Randor 3-Sep-09 10:49 
GeneralRe: DeflateStream & GZipStream Pin
harold aptroot3-Sep-09 15:35
harold aptroot3-Sep-09 15:35 
GeneralRe: DeflateStream & GZipStream Pin
harold aptroot3-Sep-09 15:41
harold aptroot3-Sep-09 15:41 
QuestionModeless Form display Pin
jimi772-Sep-09 0:31
jimi772-Sep-09 0:31 
AnswerRe: Modeless Form display Pin
Luc Pattyn2-Sep-09 0:48
sitebuilderLuc Pattyn2-Sep-09 0:48 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.