Одно создаваемое в DLL и используемое паралельно с консолью не перерисовывается.Как?
Есть библиотека на C++ под Delphi 2006. Замысел этой библитеки создать одно и предоставить возможность программе подключившей эту библиотеку выводить в поле Memo определенные сообщения (типа как отчет о выполнении) используя функцию SetMessage (идет ниже).
extern "C" __declspec(dllexport) void CreateDebugWindow(char* name, unsigned int index)
{
DebugWindowForm=new TDebugWindowForm(NULL);
DebugWindowForm->Caption=name;
DebugWindowForm->Show();
}
extern "C" __declspec(dllexport) void SetMessage(char* message, unsigned int index)
{
if(DebugWindowForm->DebugMemo->Text.Length()>MAX_CONTENT_SIZE)
DebugWindowForm->DebugMemo->Clear();
AnsiString MyString(message);
DebugWindowForm->DebugMemo->Text="HELLO WORLD";
}
extern "C" __declspec(dllexport) void DeleteDebugWindow(unsigned int index)
{
delete DebugWindowForm;
DebugWindowForm=NULL;
}
Есть консольное приложение под Visual C++ 2005 использующее эту DLL, и посылающее кучу дебаг-сообщений через SetMessage. Проблема в том что консоль то все посылает и DLL все принимает, но окно не перерисовывается. Т.е. не реагирует на стандартные сообщения Windows. Я так понимаю что мне нужен аналог Application-ProcessMassages() (билдеровская функция) но под Visual.
Как мне заставить окно отрисовываться нормально и принимать WM_PAINT и иже с ним.
С уважением.
Конечно не реагирует, нужно перегружать обработчики сообщений. Как это делать ? Зависит от архитектуры данного класса "окно". А вообще - CreateWindow рулит :))