Winforms microsoft visual studio中的输出
我正在制作一个应用程序,它使用libcurl显示php页面的输出 在终端模式下,该应用程序运行良好Winforms microsoft visual studio中的输出,winforms,curl,c++-cli,Winforms,Curl,C++ Cli,我正在制作一个应用程序,它使用libcurl显示php页面的输出 在终端模式下,该应用程序运行良好 CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "www.sglroostermail.nl/api/getChanges.php?y=1); res = curl_easy_perform(
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "www.sglroostermail.nl/api/getChanges.php?y=1);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
但现在我想做一个gui应用程序。
对于GUI,我使用microsoft visual studio 2015-->CLR empty project但是终端代码给出了自己的输出 我想在文本框或标签中显示输出
例如:(这是MYForm.h的一部分
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void textBox1_TextChanged_1(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String ^ klas = textBox1->Text;
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "www.sglroostermail.nl/api/getChanges.php?y=", klas);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
}
有人能告诉我如何将第一个代码的输出存储在变量、标签或文本框中吗?您需要告诉libcurl如何处理从远程服务器接收的输出 这里有两个选项可供使用:
- :这告诉libcurl在接收数据时调用哪个函数
- :这是一个
,将传递给write函数void*
fwrite
和stdout
,这就是libcurl将输出写入终端的原因。(注意:选项名为“写入”,因为常见的操作是下载文件并将其写入磁盘。请将其视为在收到数据后如何处理数据,不要将其视为从服务器“读取”。)
如果您想捕获数据,我会做以下几点:
- 分配某种容器:拥有一个字节缓冲区,并将CURLOPT_WRITEDATA设置为指向该缓冲区的指针
- 创建一个方法将数据复制到缓冲区,并将其设置为CURLOPT_WRITEFUNCTION
由于libcurl是一个非托管库,我将使用
std::vector
作为缓冲区。写回调必须具有原型size\t write\u回调(char*ptr、size\t size、size\t nmemb、void*userdata);
,我认为处理非托管向量比固定托管缓冲区更容易&正确处理它。C++/CLI有自己的标记,我已经改为使用该标记和winforms标记。您可以用硬方法或简单方法来完成。我推荐使用WebClient::DownloadString()这一简单方法谢谢你的回复,我只是不知道所有关于缓冲区的事情,你能举个例子吗?