1

私はこのようにフォームを呼び出そうとしました.それは大丈夫です.私はそれをループ内の別の関数で使用します.だから私はそれを更新することができます.ただ呼び出して閉じる:

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";

そして、ラベル=テストがありました。

4

0 に答える 0