C++-CLI 如何将 String^(从文本框)转换为采用 void* 类型变量的函数将接受的内容?
C++-CLI how do I convert String^ (from a textbox) to something that a function which takes void* type variables, will accept?
我有以下来自 dll 的函数:
aisgdll_setinfo(int dev, set_field_code field, void *data);
我知道如何处理前两个参数。我有一个用户输入数据的文本框,文本框 returns 是一个 String^ 类型的变量。我不知何故需要从那个文本框中获取数据并做一些事情,这样我就可以将它写入此函数的 void *data 参数。
您可以使用此表格。
我使用 Thread::Sleep 来防止处理中的滥用。虽然您的线程没有改变屏幕的状态将被更新。
void solve()
{
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Threading;
Thread^ bot_thread = gcnew Thread(gcnew ThreadStart(bot_run));
bot_thread->Start();
PictureBox^ PB_LoadGIF = gcnew PictureBox();
PB_LoadGIF->Visible = true;
while (bot_thread->ThreadState == ThreadState::Running)
{
Thread::Sleep(1000);
PB_LoadGIF->Parent->Refresh();
}
}
在网上进一步研究后,我找到了一些解决我遇到的问题的方法。我将检索到的值插入所需指针的函数。我认为这些解决方案可以由其他人根据自己的目的进行调整。用于将 Visual Studio 文本框 String^ 转换为 char*:
char* iData = (char*)Marshal::StringToHGlobalAnsi(activeBox->Text).ToPointer();
当我需要从文本框中获取浮点数时,我使用了以下方法:
int anInteger = (int)((Convert::ToDouble(activeBox->Text))*10);
int *iData = &anInteger;
我有以下来自 dll 的函数:
aisgdll_setinfo(int dev, set_field_code field, void *data);
我知道如何处理前两个参数。我有一个用户输入数据的文本框,文本框 returns 是一个 String^ 类型的变量。我不知何故需要从那个文本框中获取数据并做一些事情,这样我就可以将它写入此函数的 void *data 参数。
您可以使用此表格。 我使用 Thread::Sleep 来防止处理中的滥用。虽然您的线程没有改变屏幕的状态将被更新。
void solve()
{
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Threading;
Thread^ bot_thread = gcnew Thread(gcnew ThreadStart(bot_run));
bot_thread->Start();
PictureBox^ PB_LoadGIF = gcnew PictureBox();
PB_LoadGIF->Visible = true;
while (bot_thread->ThreadState == ThreadState::Running)
{
Thread::Sleep(1000);
PB_LoadGIF->Parent->Refresh();
}
}
在网上进一步研究后,我找到了一些解决我遇到的问题的方法。我将检索到的值插入所需指针的函数。我认为这些解决方案可以由其他人根据自己的目的进行调整。用于将 Visual Studio 文本框 String^ 转换为 char*:
char* iData = (char*)Marshal::StringToHGlobalAnsi(activeBox->Text).ToPointer();
当我需要从文本框中获取浮点数时,我使用了以下方法:
int anInteger = (int)((Convert::ToDouble(activeBox->Text))*10);
int *iData = &anInteger;