在C++中,我有一個char [256]變量,通過調用一個外部DLL來填充數據。從那裏我想添加char []作爲ComboBox項目。將char []轉換爲System :: Object
char name[256];
name[0] = "76";
comboBox1->Items->Add(name);
由於char []不是System :: Object的類型,所以會產生構建錯誤。任何關於將char []轉換爲我可以將其作爲Item添加到ComboBox控件的想法?轉換爲字符串會很好,但我不確定如何做到這一點。此外,如果我嘗試創建一個變量,例如:
string strName;
也會爲缺少的';'創建一個錯誤。在標識符'strName'之前。我是C++的初學者,並且仍然讓我的大腦纏繞它,所以感謝您提供的任何幫助!
編輯 所要求的完整代碼:
#pragma once
命名空間FMODMultipleSoundcardWindowed {
#include <string>
#include "inc/fmod.h"
#include "inc/fmod_errors.h"
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace std;
FMOD_SYSTEM *systemA, *systemB;
FMOD_SOUND *soundA, *soundB;
FMOD_CHANNEL *channelA = 0, *channelB = 0;
FMOD_DSP *dspNormalizerA, *dspNormalizerB;
FMOD_DSP *dspCompressorA, *dspCompressorB;
FMOD_DSP *dspEqualizerA[10], *dspEqualizerB[10];
FMOD_DSP *dspVSTVUA, *dspVSTVUB;
FMOD_RESULT result;
unsigned int dspVSTVUHandleA, dspVSTVUHandleB;
unsigned int version;
int numdrivers, count;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
result = FMOD_System_Create(&systemA);
ERRCHECK(result);
result = FMOD_System_GetVersion(systemA, &version);
ERRCHECK(result);
if (version < FMOD_VERSION)
{
MessageBox::Show("You are using an old version of FMOD!");
}
result = FMOD_System_GetNumDrivers(systemA, &numdrivers);
ERRCHECK(result);
for (count = 0; count < numdrivers; count++)
{
char name[256];
result = FMOD_System_GetDriverInfo(systemA, count, name, 256, 0);
ERRCHECK(result);
m_objPrimaryAudioDeviceComboBox->Items->Add(name[0]);
}
}
void ERRCHECK(FMOD_RESULT result)
{
if (result != FMOD_OK)
{
MessageBox::Show("FMOD Error!");
this->Close();
}
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::ComboBox^ m_objPrimaryAudioDeviceComboBox;
protected:
private: System::Windows::Forms::ComboBox^ m_objSecondaryAudioDeviceComboBox;
private:
System::ComponentModel::Container ^components;
編譯區域Windows窗體設計器生成的代碼
void InitializeComponent(void)
{
this->m_objPrimaryAudioDeviceComboBox = (gcnew System::Windows::Forms::ComboBox());
this->m_objSecondaryAudioDeviceComboBox = (gcnew System::Windows::Forms::ComboBox());
this->SuspendLayout();
//
// m_objPrimaryAudioDeviceComboBox
//
this->m_objPrimaryAudioDeviceComboBox->FormattingEnabled = true;
this->m_objPrimaryAudioDeviceComboBox->Location = System::Drawing::Point(12, 12);
this->m_objPrimaryAudioDeviceComboBox->Name = L"m_objPrimaryAudioDeviceComboBox";
this->m_objPrimaryAudioDeviceComboBox->Size = System::Drawing::Size(254, 21);
this->m_objPrimaryAudioDeviceComboBox->TabIndex = 0;
//
// m_objSecondaryAudioDeviceComboBox
//
this->m_objSecondaryAudioDeviceComboBox->FormattingEnabled = true;
this->m_objSecondaryAudioDeviceComboBox->Location = System::Drawing::Point(12, 54);
this->m_objSecondaryAudioDeviceComboBox->Name = L"m_objSecondaryAudioDeviceComboBox";
this->m_objSecondaryAudioDeviceComboBox->Size = System::Drawing::Size(254, 21);
this->m_objSecondaryAudioDeviceComboBox->TabIndex = 1;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(440, 426);
this->Controls->Add(this->m_objSecondaryAudioDeviceComboBox);
this->Controls->Add(this->m_objPrimaryAudioDeviceComboBox);
this->Name = L"Form1";
this->Text = L"FMOD Multiple Soundcard with VST";
this->ResumeLayout(false);
}
編譯連接DREGION
};
}
附錄給我的回答和下面的註釋:把'include'行放在'namespace FMODMultipleSoundcardWindowed {'之外。否則,'std'結束爲'FMODMultipleSoundcardWindowed :: std'。 –
2010-01-27 17:15:01
這讓我能夠按照計劃訪問字符串對象,這非常棒。但我原來的問題存在,我不能添加一個std:字符串作爲組合框項,因爲'不能將參數1從'std :: string'轉換爲'System :: Object ^' – Jeff 2010-01-27 17:23:42
編輯我的答案。 – 2010-01-27 17:27:04