Lab 7 Guide: 멀티스레딩 예제 1 * 멀티스레딩을 이용한 파일 복사 프로그램 만들기 (교재 15장, 쪽)

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

제주특별자치도 교육청 Messenger Manual
CH1 개발 효율이 높은 프로그램 구조
미디어 프로그래밍 II 소개.
프로젝트 보고서 학과 : 임학과 학번 : 성명 : 조성환 Windows 프로그래밍.
졸업 프로젝트 중간보고서 12조 Spot Browser.
Crystal Reports .NET ASTech System.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
Vision System Lab, Sang-Hun Han
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Project #2-2. Pintos User Program
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
소리가 작으면 이어폰 사용 권장!.
IT Application Development Dept. Financial Team May 24, 2005
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
Visual C++ Programming Document/View Architecture 3
Image & Video processing
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
Internet Computing KUT Youn-Hee Han
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
JDBC 프로그래밍 이수지 이동주 1.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
 midi LOGGER GL220   신제품 소개 Dec, 2011.
Internet Computing KUT Youn-Hee Han
McGraw-Hill Technology Education
인스톨쉴드9 데브스튜디오 사용 매뉴얼 (VB6에서 개발후 배포프로그램 만들기)
InstallShield Professional Services ( Services Pack / Education / Consulting ) ㈜소프트뱅크 커머스.
Chapter 11. Raw 소켓.
1 C 언어의 이해와 컴파일러 설치 프로그래밍 환경을 구축하자!.
Visual C Feature Pack Furyheimdall.tistory.com.
SSAS 변화된 구조와 사용자 분석 화면 구현 우철웅 기술이사 BI 사업부 인브레인.
[INA240] Data Structures and Practice
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
PPP (Point-to-Point Protocol)
Visual C++ Programming
Visual C++ Programming Output and File
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
ASP.NET Mobile Controls
DataStage 운영자 지침서 Operator’s Guide
운영체제 (Operating Systems)
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
날짜: 팀명: TEAM-SIX 발표자: 이기영
Cache Manager Yonghyun Kim Microsoft MVP Dev 5 team leader, ESTsoft
SYSMAC GATEWAY 간이 매뉴얼.
2018 봄학기 Pusan National University School of CSE
GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해
Visual C# VS2010 IDE Tips & Tricks
Introduction to Programming Language
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
User Datagram Protocol (UDP)
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
시스템 분석 및 설계 글로컬 IT 학과 김정기.
Operating System Multiple Access Chatting Program using Multithread
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
시스템 인터페이스 Lab#6 C 쉘 프로그래밍 실습.
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
Introduction to Computer System Spring, 2019
C++ 언어의 특징
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

Lab 7 Guide: 멀티스레딩 예제 1 * 멀티스레딩을 이용한 파일 복사 프로그램 만들기 (교재 15장, 820-824쪽)

실습 목적 및 장비 실습 목적 장비: PC, 윈도우 운영체제, Visual Studio (VC++ 6.0) 멀티스레드 프로그램의 작성 방법 스레드의 생성 Shell API의 이해 및 사용 방법 장비: PC, 윈도우 운영체제, Visual Studio (VC++ 6.0)

* Shell Programming Programming the Shell (using the Shell API) The Microsoft® Windows® user interface (UI) provides users with access to a wide variety of objects necessary for running applications and managing the operating system. Programming the Shell (using the Shell API) How to navigate the namespace and find files and folders. How to launch applications. How to transfer Shell objects with Clipboard and drag-and-drop operations. Extending the Shell (customizing or extending the behavior of the Shell by modifying the registry or creating special files) How to define a file name extension as a file class and associate it with an application. How to customize a file class's icon and shortcut menu. How to customize the appearance of a folder. How to use Autorun to automatically launch a CD-ROM application.

Shell Programming Intermediate Shell Techniques How to create links and shortcuts. How to use the taskbar. How to use application desktop toolbars. How to create Shell extension handlers to dynamically modify a variety of Shell behaviors, including the icons and shortcut menus associated with a class of files. How to integrate your application's cleanup procedures with the Shell's disk cleanup manager. How to customize the way Webview displays the contents of a folder. Advanced Shell Techniques How to create a custom virtual folder, or namespace extension, and integrate it into the Shell's namespace. Creating custom explorer bars, tool bands, and desk bands. Using the Active Desktop object. Creating Control Panel applications. Using the Shell API with scripting languages and Visual Basic®.

Shell Programming Shell API functions and data constructs References There are many functions, enum constants, and structures to support Shell Programming. Our text only uses SHBrowserForFolder(), SHFileOperation(), SHGetPathFromIDList(), SHFILEOPSTRUCT struct, and BROWSEINFO struct. References Shell Programmers Guide in MSDN

Shell Programming int SHFileOperation(LPSHFILEOPSTRUCT lpFileOp); Copies, moves, renames, or deletes a file system object. Parameters lpFileOp [in] Address of an SHFILEOPSTRUCT structure that contains information this function needs to carry out the specified operation. Return Values Returns zero if successful, or nonzero otherwise. Remarks File deletion is recursive unless you set the FOF_NORECURSION flag in lpFileOp.

Shell Programming SHFILEOPSTRUCT typedef struct _SHFILEOPSTRUCT { HWND hwnd; UINT wFunc; LPCTSTR pFrom; LPCTSTR pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; LPVOID hNameMappings; LPCSTR lpszProgressTitle; } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT; SHFILEOPSTRUCT Contains information that the SHFileOperation function uses to perform file operations. Members hwnd Window handle to the dialog box to display information about the status of the file operation. wFunc Value that indicates which operation to perform. One of {FO_COPY, FO_DELETE, FO_MOVE, FO_RENAME} pFrom Address of a buffer to specify one or more source file names. pTo Address of a buffer to contain the name of the destination file or directory.

Shell Programming LPITEMIDLIST SHBrowseForFolder( LPBROWSEINFO lpbi ); Displays a dialog box that enables the user to select a Shell folder. Parameters lpbi [in] Pointer to a BROWSEINFO structure that contains information used to display the dialog box. Return Values Returns a pointer to an ITEMIDLIST structure (PIDL) that specifies the location of the selected folder relative to the root of the namespace. If the user chooses the Cancel button in the dialog box, the return value is NULL.

Shell Programming BROWSEINFO Members typedef struct _browseinfo { HWND hwndOwner; LPCITEMIDLIST pidlRoot; LPTSTR pszDisplayName; LPCTSTR lpszTitle; UINT ulFlags; BFFCALLBACK lpfn; LPARAM lParam; int iImage; } BROWSEINFO, *LPBROWSEINFO; BROWSEINFO Members hwndOwner Handle to the owner window for the dialog box. pidlRoot Pointer to an ITEMIDLIST structure (PIDL) specifying the location of the root folder from which to start browsing. Only the specified folder and any subfolders that are beneath it in the namespace hierarchy will appear in the dialog box. This member can be NULL; in that case, the namespace root (the desktop folder) is used. pszDisplayName Address of a buffer to receive the display name of the folder selected by the user. The size of this buffer is assumed to be MAX_PATH bytes. ulFlags Flags specifying the options for the dialog box.

파일 복사 프로그램 예제 프로그램 개요 다이얼로그 기반 애플리케이션 다이얼로그 기반 애플리케이션 CFileDialog를 이용하여 한 개 이상의 파일을 선택한 다음 선택된 디렉토리에 복사 디렉토리의 선택에는 SHBrowserForFolder 함수를 사용 파일 복사에는 SHFileOperation 함수를 사용하며, 별도의 스레드로 실행되도록 함 실행 파일(http://cs.sookmyung.ac.kr/class/06395/Lab/FileCopy.exe) Button (OnFrom()) List (m_ctrlListBox) Edit (m_strDest) Button (OnTo()) Button (OnStartCopy())

파일 복사 프로그램 예제 From… 버튼의 처리 함수 조사하기 CFileDialog() 파라미터의 종류와 의미 void CFileCopyDlg::OnFrom() { m_ctrlListBox.ResetContent(); char szFilter[] = "All Files(*.*)|*.*||"; CFileDialog dlg(TRUE, NULL, NULL,OFN_ALLOWMULTISELECT, szFilter); if (IDOK == dlg.DoModal()) for (POSITION pos=dlg.GetStartPosition(); pos!=NULL; ) m_ctrlListBox.AddString(dlg.GetNextPathName(pos)); }

파일 복사 프로그램 예제 To… 버튼의 처리 함수 void CFileCopyDlg::OnTo() { ITEMIDLIST *pidlBrowse; char pszPathname[MAX_PATH]; BROWSEINFO BrInfo; BrInfo.hwndOwner = GetSafeHwnd(); BrInfo.pidlRoot = NULL; memset( &BrInfo, 0, sizeof(BrInfo) ); BrInfo.pszDisplayName = pszPathname; BrInfo.lpszTitle = "복사할 디렉터리를 선택하세요"; BrInfo.ulFlags = BIF_RETURNONLYFSDIRS; pidlBrowse = ::SHBrowseForFolder(&BrInfo); // 대화상자를 띄우기 if( pidlBrowse != NULL) { // 패스를 얻어옴 SHGetPathFromIDList(pidlBrowse, pszPathname); m_strDest = pszPathname; UpdateData(FALSE); }

파일 복사 프로그램 예제 복사시작 버튼의 처리 함수 (스레드를 이용한 파일 복사) void CFileCopyDlg::OnStartCopy() { UpdateData(); SHFILEOPSTRUCT *pFO = new SHFILEOPSTRUCT; pFO->hwnd = NULL; pFO->wFunc = FO_COPY; pFO->fFlags = FOF_NOCONFIRMMKDIR; pFO->fAnyOperationsAborted = TRUE; pFO->lpszProgressTitle = _T("파일 복사중"); CMemFile file; CArchive ar(&file, CArchive::store); CString str; int nCount = m_ctrlListBox.GetCount(); char null = 0;

for(int i=0 ; i<nCount ; i++) { m_ctrlListBox.GetText(i, str); ar.WriteString(str); ar.Write(&null, 1); } ar.Close(); pFO->pFrom = (char *)file.Detach(); // 복사될 디렉토리명 (Destination) pFO->pTo = new char [m_strDest.GetLength()+1]; strcpy((LPSTR)pFO->pTo, (LPSTR)(LPCTSTR)m_strDest); ((LPSTR)pFO->pTo)[m_strDest.GetLength()]=0; AfxBeginThread(ThreadFunc, pFO);

파일 복사 프로그램 예제 복사시작 버튼의 처리 함수 (스레드를 이용한 파일 복사) (계속) 다음 함수 프로토타입 선언을 FileCopyDlg.h에 포함시킴 UINT ThreadFunc(LPVOID pParam) { SHFILEOPSTRUCT *pFO = (SHFILEOPSTRUCT *)pParam; ::SHFileOperation(pFO); delete [] (char *)pFO->pFrom; delete [] (char *)pFO->pTo; delete pFO; return 0; } UINT ThreadFunc(LPVOID pParam);

보고서 작성 요령 Dialog 클래스 부분의 프로그램 소스 프로그램 설명 (AppWizard에 의해 생성된 부분은 제외) 주요 함수 설명 주요 구조체 설명 프로그램의 각 명령문 해설