kostya |
Отправлено: 04.12.2003, 12:42 |
|
Не зарегистрирован
|
Есть приложение, которое работает с OLE, а именно с CorelDraw.Automation.9.
Проблема заключается в том, что программа работает, но при большом количестве вызовов OLE-функций зависает, причем в любой момент времени, т.е. выполнив какую-то часть работы (может выполнить 100, а может 1000 функций), просто останавливается. Причем зависает именно Coreldrw.exe и пока он не выполнит посланную ему функцию, моя программа останавливается.
Для примера могу привести тестовую программку, которая отражает суть вопроса:
CODE |
int x = 0; // координаты
int y = 0; // текста
String s = "текст";
Variant CorelDraw = CreateOleObject("CorelDraw.Automation.9");
CorelDraw.OleFunction("FileNew"); // создание нового файла
for (int i=0; i < 100; i++){
x = 0;
for (int j=0; j < 100; j++){
CorelDraw.OleFunction("CreateArtisticText", s, x, y); // рисование текста
CorelDraw.OleFunction("SetCharacterAttributes", 0, 0, "JournalSans", 13, 50, 0, 0, 0, 0, 0, 0, 0, 2); // установка параметров текста
x = x + 50000;
}
y = y + 20000;
}
CorelDraw.OleFunction("FileSave", "D:\1.cdr", 1, 0, 0, 0); // сохранение файла
CorelDraw.OleFunction("FileClose"); // закрытие файла
CorelDraw = Unassigned; |
Запустил WinSight, чтобы покапаться, что собственно происходит...
дык вот, при запущенном WinSight все прекрасно работает не зависая, причем можно на компе во время выполнения работать как обычно, в том числе и в CorelDraw, подтормаживает конечно, НО не виснет...
Закрываешь WinSight — опять начинаються те же проблемы.
Как вариант конечно можно использовать, но как-то некрасиво... лучше саму прогу подправить (без API как понимаю тут не обойтись), помогите кто чем может. |
|
|