我曾尝试像这样调用Form。它可以正常工作。我在循环中的另一个函数中使用它。所以我可以更新它。只需调用并关闭:
OutlookAddIn::MyForm p1;
System::String^ str =gcnew System::String(FullName);
p1.label1->Text = "" + str;
p1.ShowDialog();
但我需要更新它,直到循环对每个都有效。我找到了一个解决方案 - 它在线程中调用表单:
include <windows.h>
include "Connect.h"
extern int Main();
void MainThread( )
{
HANDLE hThread;
DWORD ThreadId;
BOOL Active;
hThread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)Main,
(void*)&Active, 0, &ThreadId);
while(Active == TRUE);
CloseHandle(hThread);
}
主要功能:
#include "MyForm.h"
using namespace OutlookAddIn;
[STAThreadAttribute]
#define PBM_DELTAPOS (WM_USER+3)
int Main()
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
auto form = gcnew MyForm();
Application::Run(form);
return 0 ;
}
现在我有一个可以工作的线程 - 我只是在我需要的地方调用我MyThread();
还在我的循环函数中重新制作:
OutlookAddIn::MyForm p1;
System::String^ bstrArray =gcnew System::String(FullName);
p1.label1->Text = "" + bstrArray;
但现在我遇到了问题 - 每次循环调用时:
OutlookAddIn::MyForm p1;
程序到这里(在 MyForm.cpp 中):
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(12, 57);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(59, 13);
this->label1->TabIndex = 2;
this->label1->Text = L"Test";
我有标签=测试。