私はこのようにフォームを呼び出そうとしました.それは大丈夫です.私はそれをループ内の別の関数で使用します.だから私はそれを更新することができます.ただ呼び出して閉じる:
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";
そして、ラベル=テストがありました。