1

我曾尝试像这样调用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";

我有标签=测试。

4

0 回答 0