Прерывание выполнения функции
Как можно организовать прекращение выполнения действия?Или не прекращение, а чтоб окно реагировало на запросы.
HANDLE hFind;
AnsiString SubDirList [300];
int i_count=0;
hFind = FindFirstFile("D:\\1\\SERIAL_JPG\\*.jpg", &FindFileData);
SubDirList[0] = FindFileData.cFileName;
AnsiString s = "D:\\1\\SERIAL_JPG\\" ;
AnsiString p = FindFileData.cFileName;
s = s + p;
Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
TJPEGImage * examp = new TJPEGImage;
examp->LoadFromFile(s);
Canvas->StretchDraw(Rect (5, 155, 200,300), examp);
delete examp;
do {
i_count++;
FindNextFile (hFind, &FindFileData);
SubDirList[i_count] = FindFileData.cFileName;
Memo1 -> Lines -> Add (SubDirList[i_count]);
p = 0;
s = 0;
p = FindFileData.cFileName;
s = "D:\\1\\SERIAL_JPG\\" ;
s = s + p;
TJPEGImage * examp = new TJPEGImage;
examp->LoadFromFile(s);
Canvas->StretchDraw(Rect (5, 155, 200, 300), examp);
delete examp;
} while (SubDirList[i_count] != SubDirList[i_count-1]);
попробуй в цикле после StreachDraw поставить
Вообще ставь ее во всех длинных циклах...
попробуй в цикле после StreachDraw поставить
Вообще ставь ее во всех длинных циклах...
Вот насчет всех длинных циклов - не уверен. Можно такого намутить. Это ладно, когда в очереди сообщения типа WM_SIZE, WM_PAINT, ну или WM_CLOSE. Все отработает нормально. А если сообщения о нажатии какой-нибудь кнопки, обработчик которой по идее не должен выполняться пока приложение занято циклом.
ProcessMessages надо использовать с острожностью, предварительно обезопасив себя от выполнения кода, который выполниться не должен.
ProcessMessages надо использовать с острожностью, предварительно обезопасив себя от выполнения кода, который выполниться не должен.
ну да, переборщил... но ведь можно перед этим очистить все сообщения от мыши и клавиатуры (названия функций не помню)... а еще в таких случаях ставят Etable на False для всех кнопок которые нельзя нажимать. Еще можно ставить флаги...
Короче в данном конкретном случае использовать ProcessMessages боее чем приемлемо!:cool:
Как сделать паузу при просмотре, далее при продолжении процесса просмотра начать не сначала, а со следующеко файла. во как :rolleyes:
зы. Такое ощущение что только что перешел на объектно-событейную модель, а до этого программировал под дос. Поищи литературы - тут совсем другой подход.
засунь в отдельный поток, ему можно приоритет побольше сделать