C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[17240] Re:[질문] 쓰레드와 프로그래스바에 대하여?
유영인 [Chris] [cuperido] 1307 읽음    2002-04-05 14:46
저두 아래분과 똑같은 생각인데요..

IproveGenNetList->ProgressBar->RePaint();

위를 호출하시면 프로그레스바를 다시 그리고,

Application->ProcessMessages();

를 호출하시면 처리가 필요한 모든 부분을 다시 처리합니다. 예를 들어, 파일 복사시에 파일 복사가 빠르면, 취소 버튼이라던지 종료 버튼등이 눌러도 반응이 없는 상태가 나오는데, 위 줄을 파일 업로드 중간에 끼워주시면 처리가 가능합니다.



민인학 님이 쓰신 글 :
: 안녕하세요..
: 제가 이번에 파일복사시에...
: progress bar를 보여줄려 하는데...
: 아래와 같이 짰습니다..
: 근데.. 이상하게도.. 파일은 복사하고 있는데...
: 프로그래스바가 움직이질 않네요...
: 제가 뭘 잘못했나요?
: 부탁드립니다.
:
:
: <<<<<<<<<<<<<<<<<<<<<< thread.cpp >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
:
: // 쓰레드 입니다.
:
: void __fastcall EdifFileProgressThread::Update()
: {
:         IproveGenNetList->ProgressBar->Position = (TProgressRange)((total_read_size/total_file_size)*100);
:         IproveGenNetList->ProgressBar->Update();
: }
:
: void __fastcall EdifFileProgressThread::Execute()
: {
:         char ibuilder_dir[MAX_SIZE];
:
:         // open한 ipf파일위치에 ibuilder 디렉토리가 있는 검사후 없으면 만듬
:         sprintf( ibuilder_dir, "%sibuilder", ipfdir);
:         if (!DirectoryExists(ibuilder_dir))
:                 ForceDirectories(ibuilder_dir);
:
:         IproveGenNetList->ProgressBar->Position = 0;
:
:         // edif 파일들의 총 싸이즈를 알아냄(bytes)
:         vector<import_file_info>::iterator data;
:         for( data = ImportFilesInfo.begin(); data != ImportFilesInfo.end(); data++ ) {
:                 int handle;
:                 handle = open(data->EdifFile, O_RDONLY);
:                 total_file_size  = total_file_size + filelength(handle);
:         }
:
:         for( data = ImportFilesInfo.begin(); data != ImportFilesInfo.end(); data++ ) {
:                 char dest_file[MAX_SIZE];
:                 sprintf( dest_file, "%s\\%s", ibuilder_dir, ExtractFileName(data->EdifFile) );
:
:                 int in, out, bytes = 0;
:                 char block[1024];
:
:                 in = open(data->EdifFile, O_RDONLY);
:                 out = open(dest_file, O_WRONLY|O_CREAT,S_IREAD|S_IWRITE);
:                 while((bytes=read(in,block,sizeof(block)))>0) {
:                         char temp[MAX_SIZE];
:                         total_read_size+=bytes;
:                         write(out,block,bytes);
:                         Synchronize(Update);
:                 }
:         }
: }
:
:
:
: <<<<<<<<<<<<<<<<<<<<<<<<<<<<< main.cpp >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
:
: // 여기서 쓰레드를 호출합니다.
: void __fastcall TIproveGenNetList::FileCopy(TObject *sender)
: {
:         EdifCopyProgress = new EdifFileProgressThread(NULL);
:         EdifCopyProgress->Priority = tpTimeCritical;
:         EdifCopyProgress->Resume();
: }
:
:

+ -

관련 글 리스트
17227 [질문] 쓰레드와 프로그래스바에 대하여? 민인학 1100 2002/04/04
17243     Re:[질문] 쓰레드와 프로그래스바에 대하여? Falco 1357 2002/04/05
17240     Re:[질문] 쓰레드와 프로그래스바에 대하여? 유영인 [Chris] 1307 2002/04/05
17236     Re:[질문] 쓰레드와 프로그래스바에 대하여? 이경문 1188 2002/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.